Doctrine 1
  1. Doctrine 1
  2. DC-708

Wrong definition for MySQL string primary column

    Details

    • Type: Bug Bug
    • Status: Open
    • Priority: Major Major
    • Resolution: Unresolved
    • Affects Version/s: 1.2.2
    • Fix Version/s: 1.2.2
    • Component/s: Import/Export
    • Labels:
      None
    • Environment:
      PHP 5.3.1, WinXP-SP3, Doctrine 1.2.2, MySQL 5.1.41

      Description

      If you define a primary column, the attribute notnull is removed from the column definition because Doctrine assumes that primary columns are always not null.

      Now suppose you have a schema like this, with a string primary column.

      Client:
        columns:
          serial:    { type: string(50), notnull: true, primary: true }
          name:      { type: string(36), notnull: true }
      

      That's fine, but causes problems with MySQL where the column is created with a default value of "" (empty string) and not <none>.

      CREATE TABLE client (serial VARCHAR(50), name VARCHAR(36) NOT NULL, PRIMARY KEY(serial)) ENGINE = INNODB;
      

      Note that the 2nd column is well defined and has <none> as default value (as seen from phpMyAdmin).

      I attached a quick-workaround to disable the code which removes the notnull attribute from column definition.

      After that the SQL code is like this:

      CREATE TABLE client (serial VARCHAR(50) NOT NULL, name VARCHAR(36) NOT NULL, PRIMARY KEY(serial)) ENGINE = INNODB;
      

        Activity

          People

          • Assignee:
            Jonathan H. Wage
            Reporter:
            Claudio Nicora
          • Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

            • Created:
              Updated: