Details
-
Type:
Bug
-
Status:
Open
-
Priority:
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;
Hi, I attached a patch against Export/Mysql.php instead of the previous against Import/Builder.php.
It works on my side; can you please test it with your test suite?