Glance DB migration broken

Bug #1029913 reported by Rafael Durán Castañeda
10
This bug affects 2 people
Affects Status Importance Assigned to Milestone
glance (Ubuntu)
Invalid
Undecided
Unassigned

Bug Description

Hi,

After trying to install a new Glance server from scratch on Ubuntu Precise DB migration failed:

$ apt-get install glance-api glance-registry mysql-server python-mysqldb

Edit Glance conf files and create 'glance' database

$ service glance-registry restart
$ service glance-api restart
$ glance-manage version_control 1
$ glance-manage db_sync
Traceback (most recent call last):
  File "/usr/bin/glance-manage", line 122, in <module>
    main()
  File "/usr/bin/glance-manage", line 118, in main
    dispatch_cmd(conf, args)
  File "/usr/bin/glance-manage", line 93, in dispatch_cmd
    cmd_func(conf, args)
  File "/usr/bin/glance-manage", line 81, in do_db_sync
    glance.registry.db.migration.db_sync(conf, version, current_version)
  File "/usr/lib/python2.7/dist-packages/glance/registry/db/migration.py", line 141, in db_sync
    upgrade(conf, version=version)
  File "/usr/lib/python2.7/dist-packages/glance/registry/db/migration.py", line 67, in upgrade
    return versioning_api.upgrade(sql_connection, repo_path, version)
  File "/usr/lib/python2.7/dist-packages/migrate/versioning/api.py", line 186, in upgrade
    return _migrate(url, repository, version, upgrade=True, err=err, **opts)
  File "<string>", line 2, in _migrate
  File "/usr/lib/python2.7/dist-packages/migrate/versioning/util/__init__.py", line 159, in with_engine
    return f(*a, **kw)
  File "/usr/lib/python2.7/dist-packages/migrate/versioning/api.py", line 366, in _migrate
    schema.runchange(ver, change, changeset.step)
  File "/usr/lib/python2.7/dist-packages/migrate/versioning/schema.py", line 91, in runchange
    change.run(self.engine, step)
  File "/usr/lib/python2.7/dist-packages/migrate/versioning/script/py.py", line 145, in run
    script_func(engine)
  File "/usr/lib/python2.7/dist-packages/glance/registry/db/migrate_repo/versions/002_add_image_properties_table.py", line 57, in upgrade
    create_tables(tables)
  File "/usr/lib/python2.7/dist-packages/glance/registry/db/migrate_repo/schema.py", line 96, in create_tables
    table.create()
  File "/usr/lib/python2.7/dist-packages/sqlalchemy/schema.py", line 564, in create
    checkfirst=checkfirst)
  File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 2234, in _run_visitor
    conn._run_visitor(visitorcallable, element, **kwargs)
  File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1904, in _run_visitor
    **kwargs).traverse_single(element)
  File "/usr/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 86, in traverse_single
    return meth(obj, **kw)
  File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/ddl.py", line 86, in visit_table
    self.connection.execute(schema.CreateTable(table))
  File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1405, in execute
    params)
  File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1496, in _execute_ddl
    compiled
  File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1646, in _execute_context
    context)
  File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1639, in _execute_context
    context)
  File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 330, 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 'glance.image_properties' (errno: 150)") '\nCREATE TABLE image_properties (\n\tid INTEGER NOT NULL AUTO_INCREMENT, \n\timage_id INTEGER NOT NULL, \n\t`key` VARCHAR(255) NOT NULL, \n\tvalue TEXT, \n\tcreated_at DATETIME NOT NULL, \n\tupdated_at DATETIME, \n\tdeleted_at DATETIME, \n\tdeleted BOOL NOT NULL, \n\tPRIMARY KEY (id), \n\tUNIQUE (image_id, `key`), \n\tFOREIGN KEY(image_id) REFERENCES images (id), \n\tCHECK (deleted IN (0, 1))\n)ENGINE=InnoDB\n\n' ()

Package versions:
ii glance-api 2012.1+stable~20120608-5462295-0ubuntu2.2 OpenStack Image Registry and Delivery Service - API
ii glance-client 2012.1+stable~20120608-5462295-0ubuntu2.2 OpenStack Image Registry and Delivery Service - Registry
ii glance-common 2012.1+stable~20120608-5462295-0ubuntu2.2 OpenStack Image Registry and Delivery Service - Common
ii glance-registry 2012.1+stable~20120608-5462295-0ubuntu2.2 OpenStack Image Registry and Delivery Service - Registry
ii python-glance 2012.1+stable~20120608-5462295-0ubuntu2.2 OpenStack Image Registry and Delivery Service - Python library

errno 150 is foreign key error, so I tried creating that table manually after disabling foreign keys and everything worked as expected.

Bye

Brian Waldon (bcwaldon)
no longer affects: glance
Revision history for this message
Launchpad Janitor (janitor) wrote :

Status changed to 'Confirmed' because the bug affects multiple users.

Changed in glance (Ubuntu):
status: New → Confirmed
Revision history for this message
Dude4Linux (dude4linux) wrote :

Use the following instead to avoid the foreign key error.

$ glance-manage version_control 0
$ glance-manage db_sync

James Page (james-page)
Changed in glance (Ubuntu):
status: Confirmed → Invalid
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.