Doctrine DBAL
  1. Doctrine DBAL
  2. DBAL-276

MySQL schema manager should not make assumptions about non-DBAL types

    Details

    • Type: Bug Bug
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 2.1.6
    • Fix Version/s: 2.1.7
    • Component/s: Schema Managers
    • Security Level: All
    • 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.

        Activity

          People

          • Assignee:
            Benjamin Eberlei
            Reporter:
            Lachlan Pease
          • Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: