PHP Database Migrations for Everyone
AbstratMigration
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 the AbstractMigration
class and either override the constructor or the new validateVersion
method.hasPrimaryKey
would return inconsistently if the passed array of columns was a subset/superset of actual primary keys. This function should now only return true
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.Full Changelog: https://github.com/cakephp/phinx/compare/0.15.5...0.16.0
Full Changelog: https://github.com/cakephp/phinx/compare/0.15.4...0.15.5
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+.
Full Changelog: https://github.com/cakephp/phinx/compare/0.15.3...0.15.4
Full Changelog: https://github.com/cakephp/phinx/compare/0.15.2...0.15.3
Full Changelog: https://github.com/cakephp/phinx/compare/0.15.1...0.15.2
PostgresAdapter::useIdentity
is always initialized by @othercorey in https://github.com/cakephp/phinx/pull/2223
Full Changelog: https://github.com/cakephp/phinx/compare/0.15.0...0.15.1
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.
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 https://github.com/cakephp/phinx/pull/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;
In previous versions, Phinx was inconsistent with how it handled foreign keys across the adapters. Per https://github.com/cakephp/phinx/pull/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.
Full Changelog: https://github.com/cakephp/phinx/compare/0.14.0...0.15.0
Full Changelog: https://github.com/cakephp/phinx/compare/0.13.4...0.14.0
This release adds feature flags, which allows for toggling behavior of Phinx to better fit your workflow. Currently, there are two flags that opt out of breaking changes that were added in 0.13.0
, namely allowing to restore behavior of having primary keys signed by default as well as making columns not null by default.
Full Changelog: https://github.com/cakephp/phinx/compare/0.13.3...0.13.4
Full Changelog: https://github.com/cakephp/phinx/compare/0.13.2...0.13.3