I am seeing a similar issue, however the tables are all InnoDB. ubuntu@server:~$ python -m neutron.db.migration.migrate_to_ml2 openvswitch mysql://USER:PASSWORD@10.251.1.8/neutron Traceback (most recent call last): File "/usr/lib/python2.7/runpy.py", line 162, in _run_module_as_main "__main__", fname, loader, pkg_name) File "/usr/lib/python2.7/runpy.py", line 72, in _run_code exec code in run_globals File "/usr/lib/python2.7/dist-packages/neutron/db/migration/migrate_to_ml2.py", line 462, in main() File "/usr/lib/python2.7/dist-packages/neutron/db/migration/migrate_to_ml2.py", line 458, in main args.vxlan_udp_port) File "/usr/lib/python2.7/dist-packages/neutron/db/migration/migrate_to_ml2.py", line 138, in __call__ metadata.create_all(engine) File "/usr/lib/python2.7/dist-packages/sqlalchemy/schema.py", line 2848, in create_all tables=tables) File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1479, in _run_visitor conn._run_visitor(visitorcallable, element, **kwargs) File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1122, in _run_visitor **kwargs).traverse_single(element) File "/usr/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single return meth(obj, **kw) File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 70, in visit_metadata self.traverse_single(table, create_ok=True) File "/usr/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single return meth(obj, **kw) File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 89, in visit_table self.connection.execute(schema.CreateTable(table)) File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in execute params) File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 720, in _execute_ddl compiled File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context context) File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception exc_info File "/usr/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause reraise(type(exception), exception, tb=exc_tb) File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 867, in _execute_context context) File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 324, in do_execute cursor.execute(statement, parameters) File "/usr/lib/python2.7/dist-packages/MySQLdb/cursors.py", line 174, in execute self.errorhandler(self, exc, value) File "/usr/lib/python2.7/dist-packages/MySQLdb/connections.py", line 36, in defaulterrorhandler raise errorclass, errorvalue sqlalchemy.exc.OperationalError: (OperationalError) (1005, "Can't create table 'neutron.ml2_network_segments' (errno: 150)") '\nCREATE TABLE ml2_network_segments (\n\tid VARCHAR(36) NOT NULL, \n\tnetwork_id VARCHAR(36) NOT NULL, \n\tnetwork_type VARCHAR(32) NOT NULL, \n\tphysical_network VARCHAR(64), \n\tsegmentation_id INTEGER, \n\tPRIMARY KEY (id), \n\tFOREIGN KEY(network_id) REFERENCES networks (id) ON DELETE CASCADE\n)\n\n' () ubuntu@server:~$ mysql -u root Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 5215 Server version: 5.5.34 MySQL Community Server (GPL), wsrep_25.9.r3928 Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> use neutron; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> show tables; +------------------------------+ | Tables_in_neutron | +------------------------------+ | agents | | alembic_version | | allowedaddresspairs | | arista_provisioned_nets | | arista_provisioned_tenants | | arista_provisioned_vms | | cisco_ml2_credentials | | cisco_ml2_nexusport_bindings | | dnsnameservers | | externalnetworks | | extradhcpopts | | floatingips | | ipallocationpools | | ipallocations | | ipavailabilityranges | | ml2_flat_allocations | | ml2_gre_allocations | | ml2_gre_endpoints | | ml2_vlan_allocations | | ml2_vxlan_allocations | | ml2_vxlan_endpoints | | networkdhcpagentbindings | | networks | | ovs_network_bindings | | ovs_tunnel_allocations | | ovs_tunnel_endpoints | | ovs_vlan_allocations | | portbindingports | | ports | | quotas | | routerl3agentbindings | | routerroutes | | routers | | securitygroupportbindings | | securitygrouprules | | securitygroups | | subnetroutes | | subnets | +------------------------------+ 38 rows in set (0.00 sec) mysql> select * from networks; +----------------------------------+--------------------------------------+--------------+--------+----------------+--------+ | tenant_id | id | name | status | admin_state_up | shared | +----------------------------------+--------------------------------------+--------------+--------+----------------+--------+ | d8d6413cc57f4699aa539eb9de6f64de | bee5ef99-5414-49ad-a423-0b57a8244460 | Public_AGILE | ACTIVE | 1 | 0 | +----------------------------------+--------------------------------------+--------------+--------+----------------+--------+ 1 row in set (0.00 sec) mysql> SHOW INNODB STATUS; ------------------------ LATEST FOREIGN KEY ERROR ------------------------ 140701 15:30:04 Error in foreign key constraint of table neutron/ml2_network_segments: FOREIGN KEY(network_id) REFERENCES networks (id) ON DELETE CASCADE): Cannot find an index in the referenced table where the referenced columns appear as the first columns, or column types in the table and the referenced table do not match for constraint. Note that the internal storage type of ENUM and SET changed in tables created with >= InnoDB-4.1.12, and such columns in old tables cannot be referenced by such columns in new tables. See http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html for correct foreign key definition. mysql> show create table networks; +----------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Table | Create Table | +----------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | networks | CREATE TABLE `networks` ( `tenant_id` varchar(255) DEFAULT NULL, `id` varchar(36) NOT NULL, `name` varchar(255) DEFAULT NULL, `status` varchar(16) DEFAULT NULL, `admin_state_up` tinyint(1) DEFAULT NULL, `shared` tinyint(1) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 | +----------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec)