[DBAL-276] MySQL schema manager should not make assumptions about non-DBAL types Created: 16/May/12  Updated: 17/Apr/14  Resolved: 27/May/12

Status: Resolved
Project: Doctrine DBAL
Component/s: Schema Managers
Affects Version/s: 2.1.6
Fix Version/s: 2.1.7
Security Level: All

Type: Bug Priority: Major
Reporter: Lachlan Pease Assignee: Benjamin Eberlei
Resolution: Fixed Votes: 0
Labels: None
Environment:

Macintosh OS X 10.7.2
Homebrew PHP 5.3.6 (CLI SAPI)
Doctrine DBAL v2.1.6, installed via Symfony2's vendor scripts



 Description   

When using the DBAL MySQL schema manager to create migrations or update the schema directly, it can create conflicts with custom types due to the way it processes some non-DBAL types in _getPortableTableColumnDefinition.

I recently implemented a binary-string type, using the MySQL BINARY/VARBINARY columns (as opposed to blob, which I see has been adopted in 2.2), due to the content for my application always being a 60 byte binary string. Doctrine has been working fine with it, but upon generating my next migration, I discovered that the schema manager wanted to re-set the column's length.
Generated SQL: "ALTER TABLE User CHANGE password password VARBINARY(60) NOT NULL"

It appears that this is caused by lines 138 & 139 of MySqlSchemaManager.php clearing the column's length. There doesn't seem to be any other code pertaining to MySQL and binary/varbinary, so removing these two lines should be safe and save trouble for future users, without causing issues for those who choose to implement it as a blob or similar.



 Comments   
Comment by Benjamin Eberlei [ 27/May/12 ]

Fixed

Generated at Thu Nov 27 10:56:11 UTC 2014 using JIRA 6.2.3#6260-sha1:63ef1d6dac3f4f4d7db4c1effd405ba38ccdc558.