Releases: cakephp/phinx
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
0.14.0
Breaking Changes
- Require php-64bit to install phinx by @MasterOdin in #2169
- Min PHP 7.3 by @dereuromark in #2167
Fixes
- Fix recreating indices for renamed/removed columns. by @ndm2 in #2134
- Refactor foreign keys switching. by @ndm2 in #2171
- Fix blank line above declare statement, see PSR-12 by @chrisblech in #2175
- Add existing comment to column object for mysql by @alex-jonas in #2174
- Update phinxlog as part of migration transaction by @JRDuncan in #2181
- Fix missing quoting on constraints name for sqlserver by @algorhythm in #2186
- Make check for CURRENT_TIMESTAMP in default value case insensitive by @vuyiswankosi in #2190
- Cache created decorated connection by @MasterOdin in #2191
- Fix grammar in exception message by @cnizzardini in #2203
- Fix PostgresAdapter not returning limit for char and varchar by @roblperry in #2214
- Fix 2193 Postgres GENERATED ALWAYS by @captain-redbeard in #2195
Docs
- Update license copyright to CakePHP Software Foundation by @MasterOdin in #2170
- update phinx link by @Arhell in #2177
- Add note about MyISAM length limitation by @naidim in #2204
- Clarify where feature flags are in configuration file with a YAML example by @SteenSchutt in #2206
New Contributors
- @chrisblech made their first contribution in #2175
- @alex-jonas made their first contribution in #2174
- @algorhythm made their first contribution in #2186
- @vuyiswankosi made their first contribution in #2190
- @naidim made their first contribution in #2204
- @SteenSchutt made their first contribution in #2206
- @roblperry made their first contribution in #2214
- @captain-redbeard made their first contribution in #2195
Full Changelog: 0.13.4...0.14.0
0.13.4
Feature Flags
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.
Fixes
- Fix custom column types not working anymore by @ndm2 in #2156
- Restored migration template method return types by @Bilge in #2160
- Fix foreign key constraint violations on implicit table drops by @ndm2 in #2131
- Add feature flags to disable some 0.13.0 breaking changes by @MasterOdin in #2159
- Changed breakpoint column to disallow nulls again by @Bilge in #2162
Full Changelog: 0.13.3...0.13.4
0.13.3
Fixes
- Fix string to int return type by @dereuromark in #2150
- Fix rolling back columns with indices for SQLite and SQL Server by @ndm2 in #2128
- Add testcases for Util::getVersionFromFileName function by @MasterOdin in #2153
- Fix reference to MysqlAdapter::FIRST constant in migrations doc by @niekatywny in #2143
Full Changelog: 0.13.2...0.13.3
0.13.2
Fixes
- Maintain indexes / triggers after altering sqlite tables by @MasterOdin in #2040
- Fix documentation seeder_base_class configuration by @N-Silbernagel in #2124
- Fix deprecated ${} string interpolation by @rigrig in #2133
- Fix enum by @dereuromark in #2140
New Contributors
- @Arhell made their first contribution in #2120
- @N-Silbernagel made their first contribution in #2124
- @rigrig made their first contribution in #2133
- @nono-lqdn made their first contribution in #2137
Full Changelog: 0.13.1...0.13.2
0.13.1
Fixes
- Fix target being set to
0
if omitted when running migrate by @nrob81 in #2115 - Fix deprecation warning on return value for
Config::offsetGet
by @MasterOdin in #2117
Full Changelog: 0.13.0...0.13.1
0.13.0
Breaking Changes
- set column null by default unless identity by @MasterOdin in #1872. Previously columns were created as
NOT NULL
by default, and to now get that behavior, you will need to explicitly pass'null' => false
in the column options. - remove remove
$direction
argument topreFlightCheck
andpostFlightCheck
(useisMigratingUp
property) by @MasterOdin in #1892 - make
utf8mb4
default charset and collation for new mysql tables by @MasterOdin in #1875 (Setcharset
andcollation
setting in phinx.php toutf8mb3
for prior behavior) - make default PKs for mysql unsigned by default by @MasterOdin in #1899. When defining foreign keys, you will need to now need to set
$signed => false
. To restore prior behavior, pass$signed => true
when defining the default PK. - Add type hints to codebase by @MasterOdin in #1995 (This does not affect the
up
,down
, orchange
methods forAbstractMigration
. If you extend from phinx, you will need to add type hinting to your code) - remove deprecated hasSchemaTable function from
AdapterInterface
by @MasterOdin in #1877 - remove deprecated
insert
,dropTable
methods fromMigrationInterface
by @MasterOdin in #1878 - Do not set code when recasting PDOException when connecting to DB by @MasterOdin in #2101
- Implement identity in
PostgresAdapter
by @ajibarra in #2085 (identity columns for postgres 10+ will now be generated asINTEGER NOT NULL GENERATED ALWAYS AS IDENTITY
instead ofSERIAL NOT NULL
)
Deprecations
- Deprecate the
default_migration_table
config setting, usemigration_table
instead by @MasterOdin in #1961
New Features
- add createSchema and dropSchema methods on MigrationInterface by @MasterOdin in #1871
Improvements
- remove check on column type for setting collation / encoding by @MasterOdin in #1881
- trigger deprecation notice when using default_database by @MasterOdin in #1890 (function had been marked as deprecated in 0.12.0)
- add support for smallserial alias for postgres by @MasterOdin in #1915 (note, using
smallinteger
on an identity column will now use the typesmallserial
) - allow setting migration_table per environment by @MasterOdin in #1961
- Add new
shouldExecute
method toAbstractMigration
andAbstractSeed
by @AdrienPoupa in #1939 - Add for geometry column type to
SqlServerAdapter
by @tedce in #1969 - Add optional
$params
argument to query/execute adapter methods to allow usage of prepared queries by @MasterOdin in #1962 - Allow specifying template style for create command by @MasterOdin in #2013 (note, the name of the base migration file has changed, argument has changed for
AbstractCommand::getMigrationTemplateFilename
) - Improve associative array phpdocs by @dereuromark in #2034
- Pass environment to seed from manager by @martenb in #2102 (note, parameter change to
Manager::getSeeds
method)
Full Changelog: 0.12.13...0.13.0
0.12.13
Fixes
- Fix defaultName deprecation warning on symfony/console 6.1 by @MasterOdin in #2107
Full Changelog: 0.12.12...0.12.13
0.12.12
Fixes
- Fix setting persistent option for PDO connection by @paulermo in #2092
- Fix SqlServerAdapter returning empty string instead of null for column default by @reeperbahnause in #2090
Full Changelog: 0.12.11...0.12.12