I ran into an interesting bug/fact today while messing around with MySQL 5.5. It seems that in the DDL, you can’t say “Type=InnoDB|MyISAM|Foo” anymore. You have to say “Engine=InnoDB”.

This will break your propel:build-all , or propel:build-all-load .. or if you manually try to execute the sql from data/sql/*. You’ll get the following error:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘Type=InnoDB’ at line 11

This issue is resolved in Propel 1.5.0, but I’m not sure when Symfony will include that in the Symfony 1.4 series.

To fix this issue, all you need to do is edit one file:

symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mysql/MysqlDDLBuilder.php

Line 156, change it to say: $script .= “Engine=$mysqlTableType”;

Hope this helps anyone else using Propel, Symfony and MySQL 5.5

3 thoughts on “SQL Error with Symfony 1.4.4 and MySQL 5.5

  1. Roland Bouman

    Yes. From the MySQL 3.23/4.0/4.1 Manual:


    ENGINE was added in MySQL 4.0.18 (for 4.0) and 4.1.2 (for 4.1). It is the preferred option name as of those versions, and TYPE has become deprecated. TYPE is supported throughout the 4.x series, but likely will be removed in the future.

    While it of course sucks to deprecate keywords, it's not like frameworks and apps didn't have a chance to fix their code.
    http://dev.mysql.com/doc/refman/4.1/en/create-t

  2. Pingback: SQL Error with Symfony 1.4.4 and MySQL 5.5 — Third Party Code | Error Resolve | Errors | Software | Hardware | MSSQL | MySQL | .NET | PHP | Asp.NET

Leave a Reply