Releases: cakephp/phinx
0.16.3
Features
- Add dry-run option to seed:run by @MasterOdin in #2299
- Support Literal values in inserts by @MasterOdin in #2301
Bug Fixes
- Fix setting sqlsrv PK name with qualified table name by @MichaelDesignamite in #2306
- Append sqlite suffix to name on info output by @MasterOdin in #2307
Documentation
- Fix README badges by @MasterOdin in #2296
- Update migrations.rst by @MarwanSalim in #2303
Misc
- Consolidate insert/bulkInsert implementations by @MasterOdin in #2300
- DRY info output for console commands by @MasterOdin in #2302
- Fix phpcs error in PDOAdapter by @MasterOdin in #2308
- Move schema to class property for PostgresAdapter by @MasterOdin in #2309
Note: ThePostgresAdapter::getGlobalSchemaName
protected function has been removed. Use thePostgresAdapter::$schema
class member variable instead.
New Contributors
- @MarwanSalim made their first contribution in #2303
- @MichaelDesignamite made their first contribution in #2306
Full Changelog: 0.16.2...0.16.3
0.16.2
Features
- Add migration version and name to pending actions error by @ajibarra in #2289
- Show version in CLI by @MasterOdin in #2291
- Mark password as a SensitiveParameter by @edudobay in #2295
Bug Fixes
- Fix using string primary_key value for sqlite by @MasterOdin in #2285
- Fix quoting DB name when creating/dropping by @MasterOdin in #2286
- Fix escaping database name for SqlServerAdapter::dropDatabase by @MasterOdin in #2287
Documentation
- Fix docs example for migrate create by @MasterOdin in #2284
New Contributors
Full Changelog: 0.16.1...0.16.2
0.16.1
Features
- Option for addTimeStamps() to use datetime by @joshbmarshall in #2273
Bug Fixes
- Fixing errors when migration name is null by @jaydiablo in #2268
- Move postFlighCheck to be called before commit transaction by @ajibarra in #2272
- Fix renaming column with Extra info set by @MasterOdin in #2275
Miscellaneous
- Bump codecov/codecov-action from 3 to 4 by @dependabot in #2265
- Fix mysql latest CI workflow by @MasterOdin in #2276
- Fix tests for MySQL 8.4 by @ajibarra in #2281
- Update box.json to include vendor/symfony/console/Resources by @ajibarra in #2280
- Update docs for 0.16.x by @ajibarra in #2279
New Contributors
- @jaydiablo made their first contribution in #2268
- @joshbmarshall made their first contribution in #2273
Full Changelog: 0.16.0...0.16.1
0.16.0
Breaking Changes
- Validate datetime for version by @dereuromark in #2249
When usingAbstratMigration
class, when it's instantiated, the version will be validated that it is 14 characters (YYYYMMDDHHmmSS
). A future version may strengthen this to validate that it's a valid datetime. To get prior behavior, will need to extend theAbstractMigration
class and either override the constructor or the newvalidateVersion
method. - Fix inconsistencies with hasPrimaryKey by @DrewKolstad in #2228
PreviouslyhasPrimaryKey
would return inconsistently if the passed array of columns was a subset/superset of actual primary keys. This function should now only returntrue
iff the passed array of columns strictly matches the actual list of primary key columns (same length and values). Postgres and SQLServer are case sensitive, while MySQL and SQLite are case insensitive.
Fixes
- Fix setting faked migrations as migrated by @MasterOdin in #2252
- Fix for MySQL 8 DEFAULT_GENERATED extra by @cergfix in #2253
- Fix fatal errors when calling get methods by @markstory in #2257
- Fix using literal type with add column by @ndm2 in #2255
- Make Abstract{Migration,Seed}::getAdapter return non-null by @MasterOdin in #2261
Docs
- Reword null option description by @MasterOdin in #2262
Misc
- Bump actions/cache from 3 to 4 by @dependabot in #2260
New Contributors
- @DrewKolstad made their first contribution in #2228
- @cergfix made their first contribution in #2253
Full Changelog: 0.15.5...0.16.0
0.15.5
0.15.4
Fixes
- Correct type for migrate target option by @wallacio in #2241
- Fix up UUID binary16 support for Sqlite by @dereuromark in #2239
Note: Columns created in Sqlite before 0.15.4 using the PdoAdapter::PHINX_TYPE_BINARYUUID
type were binary_blob
. In 0.15.4 they were changed to be type uuid_blob
. If you rely on this constant, you will need to manually update the types of any columns using PdoAdapter::PHINX_TYPE_BINARYUUID
to the new value.
Note: binary(16) support for Sqlite inside CakePHP requires v5.0.3+.
New Contributors
Full Changelog: 0.15.3...0.15.4
0.15.3
Fixes
- Fix using test command when manually setting config by @MasterOdin in #2235
- Fix default to null for type of column in addColumn by @gaydamakha in #2236
- Loosen psr/container version constraint by @MasterOdin in #2237
Docs
- Update minimum PHP version in docs by @coderanger in #2232
New Contributors
- @coderanger made their first contribution in #2232
- @gaydamakha made their first contribution in #2236
Full Changelog: 0.15.2...0.15.3
0.15.2
Fixes
- Allow Table::addColumn() to use type from Column object again by @othercorey in #2224
Full Changelog: 0.15.1...0.15.2
0.15.1
Fixes
- Ensure
PostgresAdapter::useIdentity
is always initialized by @othercorey in #2223
Full Changelog: 0.15.0...0.15.1
0.15.0
Note: The 2.0.0
, 2.0.1
, and 2.0.2
tags were created incorrectly, and have been deleted and will be removed from packagist. This release features all of the same features and changes that was in those releases. We are still using 0.x
releases as the API is not yet considered stable, as evidenced by the breaking change below.
Breaking Changes
PHP 8.1 / Type declarations
This release requires PHP 8.1 or greater to be installed to use Phinx. As part of this, a number of type declarations were changed throughout Phinx to take advantage of the expanded syntax allowed by PHP 8.1. See #2218 for all the files affected.
For users that overwrite $autoId
in their migration class, this will now need a bool
type declaration:
public bool $autoId = false;
Foreign Key Handling
In previous versions, Phinx was inconsistent with how it handled foreign keys across the adapters. Per #2212, here is the old and new behaviors:
Currently the behavior looks like this:
MySQL Postgres Sqlite SQL Server Case-sensitive drop no yes yes no¹ Case-sensitive lookup yes yes no yes¹ Multi-column drop no² yes no³ no² Drop all column matches yes yes no yes Column order dependent drop no no no no Column order dependent lookup yes no no no Silently drop non-existent by columns no yes no yes Silently drop non-existent by name no no - no 1) In a case sensitive database the query would produce an error.
2) Generates duplicate drop instructions, one for every key that has any of the given columns.
3) For every column, the first key that starts with that column would be deleted.With these changes, the new behavior would be as follows:
MySQL Postgres Sqlite SQL Server Case-sensitive drop no yes¹ no yes¹ Case-sensitive lookup no yes¹ no yes¹ Multi-column drop yes yes yes yes Drop all column matches yes yes yes yes Column order dependent drop yes yes yes yes Column order dependent lookup yes yes yes yes Silently drop non-existent by columns no no no no Silently drop non-existent by name no no - no 1) The behavior is independent of whether the database/column is actually case-sensitive.
Features
- Require PHP 8.1+
- Update for Cake 5 by @ADmad in #2106
- Add/improve type declarations for PHP 8.1 by @othercorey in #2218
- Unify multi-column foreign key handling by @ndm2 in #2212
- Add declare strict_types to seed template by @MasterOdin in #2220
Docs
- fix phinx link by @Arhell in #2179
- update phinx link by @Arhell in #2180
- Fix grammar in configuration doc by @Jonezzyboy in #2219
New Contributors
- @Jonezzyboy made their first contribution in #2219
Full Changelog: 0.14.0...0.15.0