The default MySQL engine for the OpenStack project CI system is MyIASM, which apparently has issues with multibyte characters and field lengths. It appears that the remedy is to remove the foreign key relationship OR define the mysql_engine in the table schema that sqlalchemy utilizes. This is covered here: http://docs.sqlalchemy.org/en/rel_1_0/dialects/mysql.html?highlight=charset#create-table-arguments-including-storage-engines
If one attempts to load the database schema with MyIASM, the following error occurs:
INFO [alembic.runtime.migration] Context impl MySQLImpl.
INFO [alembic.runtime.migration] Will assume non-transactional DDL.
INFO [alembic.runtime.migration] Running upgrade -> 578f84f38d, inital_db_schema
Traceback (most recent call last):
File "/usr/local/bin/ironic-inspector-dbsync", line 11, in <module>
sys.exit(main())
File "/usr/local/lib/python2.7/dist-packages/ironic_inspector/dbsync.py", line 90, in main
CONF.command.func(config, CONF.command.name)
File "/usr/local/lib/python2.7/dist-packages/ironic_inspector/dbsync.py", line 72, in with_revision
do_alembic_command(config, cmd, revision)
File "/usr/local/lib/python2.7/dist-packages/ironic_inspector/dbsync.py", line 77, in do_alembic_command
getattr(alembic_command, cmd)(config, *args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/alembic/command.py", line 174, in upgrade
script.run_env()
File "/usr/local/lib/python2.7/dist-packages/alembic/script/base.py", line 397, in run_env
util.load_python_file(self.dir, 'env.py')
File "/usr/local/lib/python2.7/dist-packages/alembic/util/pyfiles.py", line 81, in load_python_file
module = load_module_py(module_id, path)
File "/usr/local/lib/python2.7/dist-packages/alembic/util/compat.py", line 79, in load_module_py
mod = imp.load_source(module_id, path, fp)
File "/usr/local/lib/python2.7/dist-packages/ironic_inspector/migrations/env.py", line 82, in <module>
run_migrations_online()
File "/usr/local/lib/python2.7/dist-packages/ironic_inspector/migrations/env.py", line 77, in run_migrations_online
context.run_migrations()
File "<string>", line 8, in run_migrations
File "/usr/local/lib/python2.7/dist-packages/alembic/runtime/environment.py", line 797, in run_migrations
self.get_context().run_migrations(**kw)
File "/usr/local/lib/python2.7/dist-packages/alembic/runtime/migration.py", line 312, in run_migrations
step.migration_fn(**kw)
File "/usr/local/lib/python2.7/dist-packages/ironic_inspector/migrations/versions/578f84f38d_inital_db_schema.py", line 48, in upgrade
sa.Column('uuid', sa.String(36), sa.ForeignKey('nodes.uuid'))
File "<string>", line 8, in create_table
File "<string>", line 3, in create_table
File "/usr/local/lib/python2.7/dist-packages/alembic/operations/ops.py", line 1098, in create_table
return operations.invoke(op)
File "/usr/local/lib/python2.7/dist-packages/alembic/operations/base.py", line 318, in invoke
return fn(self, operation)
File "/usr/local/lib/python2.7/dist-packages/alembic/operations/toimpl.py", line 101, in create_table
operations.impl.create_table(table)
File "/usr/local/lib/python2.7/dist-packages/alembic/ddl/impl.py", line 194, in create_table
self._exec(schema.CreateTable(table))
File "/usr/local/lib/python2.7/dist-packages/alembic/ddl/impl.py", line 118, in _exec
return conn.execute(construct, *multiparams, **params)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 914, in execute
return meth(self, multiparams, params)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/ddl.py", line 68, in _execute_on_connection
return connection._execute_ddl(self, multiparams, params)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 968, in _execute_ddl
compiled
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1146, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1341, in _handle_dbapi_exception
exc_info
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 199, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1139, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 450, 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: (_mysql_exceptions.OperationalError) (1071, 'Specified key was too long; max key length is 1000 bytes') [SQL: u'\nCREATE TABLE attributes (\n\tname VARCHAR(255) NOT NULL, \n\tvalue VARCHAR(255) NOT NULL, \n\tuuid VARCHAR(36), \n\tPRIMARY KEY (name, value), \n\tFOREIGN KEY(uuid) REFERENCES nodes (uuid)\n)\n\n']
I don't know why the OpenStack CI enjoys shutting its leg, but ok, I'll try to fix it. Thanks for reporting.