Public bug reported:

Since MySQL 8.0.17 'member' is reserved keyword so it can't be column name in 
'image_members' table.
https://dev.mysql.com/doc/refman/8.0/en/keywords.html

# rpm -qf /usr/bin/glance-manage
openstack-glance-17.0.0-2.el7.noarch
$ glance-manage --config-file /etc/glance/glance-api.conf db_sync
INFO  [alembic.runtime.migration] Context impl MySQLImpl.
INFO  [alembic.runtime.migration] Will assume non-transactional DDL.
INFO  [alembic.runtime.migration] Running upgrade  -> liberty, liberty initial
CRITI [glance] Unhandled error
Traceback (most recent call last):
  File "/bin/glance-manage", line 10, in <module>
    sys.exit(main())
  File "/usr/lib/python2.7/site-packages/glance/cmd/manage.py", line 563, in 
main
    return CONF.command.action_fn()
  File "/usr/lib/python2.7/site-packages/glance/cmd/manage.py", line 395, in 
sync
    self.command_object.sync(CONF.command.version)
  File "/usr/lib/python2.7/site-packages/glance/cmd/manage.py", line 165, in 
sync
    self.expand(online_migration=False)
  File "/usr/lib/python2.7/site-packages/glance/cmd/manage.py", line 222, in 
expand
    self._sync(version=expand_head)
  File "/usr/lib/python2.7/site-packages/glance/cmd/manage.py", line 180, in 
_sync
    alembic_command.upgrade(a_config, version)
  File "/usr/lib/python2.7/site-packages/alembic/command.py", line 254, in 
upgrade
    script.run_env()
  File "/usr/lib/python2.7/site-packages/alembic/script/base.py", line 425, in 
run_env
    util.load_python_file(self.dir, 'env.py')
  File "/usr/lib/python2.7/site-packages/alembic/util/pyfiles.py", line 81, in 
load_python_file
    module = load_module_py(module_id, path)
  File "/usr/lib/python2.7/site-packages/alembic/util/compat.py", line 141, in 
load_module_py
    mod = imp.load_source(module_id, path, fp)
  File 
"/usr/lib/python2.7/site-packages/glance/db/sqlalchemy/alembic_migrations/env.py",
 line 88, in <module>
    run_migrations_online()
  File 
"/usr/lib/python2.7/site-packages/glance/db/sqlalchemy/alembic_migrations/env.py",
 line 83, in run_migrations_online
    context.run_migrations()
  File "<string>", line 8, in run_migrations
  File "/usr/lib/python2.7/site-packages/alembic/runtime/environment.py", line 
836, in run_migrations
    self.get_context().run_migrations(**kw)
  File "/usr/lib/python2.7/site-packages/alembic/runtime/migration.py", line 
330, in run_migrations
    step.migration_fn(**kw)
  File 
"/usr/lib/python2.7/site-packages/glance/db/sqlalchemy/alembic_migrations/versions/liberty_initial.py",
 line 37, in upgrade
    add_images_tables.upgrade()
  File 
"/usr/lib/python2.7/site-packages/glance/db/sqlalchemy/alembic_migrations/add_images_tables.py",
 line 200, in upgrade
    _add_image_members_table()
  File 
"/usr/lib/python2.7/site-packages/glance/db/sqlalchemy/alembic_migrations/add_images_tables.py",
 line 155, in _add_image_members_table
    extend_existing=True)
  File "<string>", line 8, in create_table
  File "<string>", line 3, in create_table
  File "/usr/lib/python2.7/site-packages/alembic/operations/ops.py", line 1120, 
in create_table
    return operations.invoke(op)
  File "/usr/lib/python2.7/site-packages/alembic/operations/base.py", line 319, 
in invoke
    return fn(self, operation)
  File "/usr/lib/python2.7/site-packages/alembic/operations/toimpl.py", line 
101, in create_table
    operations.impl.create_table(table)
  File "/usr/lib/python2.7/site-packages/alembic/ddl/impl.py", line 194, in 
create_table
    self._exec(schema.CreateTable(table))
  File "/usr/lib/python2.7/site-packages/alembic/ddl/impl.py", line 118, in 
_exec
    return conn.execute(construct, *multiparams, **params)
  File "/usr/lib64/python2.7/site-packages/sqlalchemy/engine/base.py", line 
948, in execute
    return meth(self, multiparams, params)
  File "/usr/lib64/python2.7/site-packages/sqlalchemy/sql/ddl.py", line 68, in 
_execute_on_connection
    return connection._execute_ddl(self, multiparams, params)
  File "/usr/lib64/python2.7/site-packages/sqlalchemy/engine/base.py", line 
1009, in _execute_ddl
    compiled
  File "/usr/lib64/python2.7/site-packages/sqlalchemy/engine/base.py", line 
1200, in _execute_context
    context)
  File "/usr/lib64/python2.7/site-packages/sqlalchemy/engine/base.py", line 
1409, in _handle_dbapi_exception
    util.raise_from_cause(newraise, exc_info)
  File "/usr/lib64/python2.7/site-packages/sqlalchemy/util/compat.py", line 
203, in raise_from_cause
    reraise(type(exception), exception, tb=exc_tb, cause=cause)
  File "/usr/lib64/python2.7/site-packages/sqlalchemy/engine/base.py", line 
1193, in _execute_context
    context)
  File "/usr/lib64/python2.7/site-packages/sqlalchemy/engine/default.py", line 
507, in do_execute
    cursor.execute(statement, parameters)
  File "/usr/lib/python2.7/site-packages/pymysql/cursors.py", line 170, in 
execute
    result = self._query(query)
  File "/usr/lib/python2.7/site-packages/pymysql/cursors.py", line 328, in 
_query
    conn.query(q)
  File "/usr/lib/python2.7/site-packages/pymysql/connections.py", line 516, in 
query
    self._affected_rows = self._read_query_result(unbuffered=unbuffered)
  File "/usr/lib/python2.7/site-packages/pymysql/connections.py", line 727, in 
_read_query_result
    result.read()
  File "/usr/lib/python2.7/site-packages/pymysql/connections.py", line 1066, in 
read
    first_packet = self.connection._read_packet()
  File "/usr/lib/python2.7/site-packages/pymysql/connections.py", line 683, in 
_read_packet
    packet.check_error()
  File "/usr/lib/python2.7/site-packages/pymysql/protocol.py", line 220, in 
check_error
    err.raise_mysql_exception(self._data)
  File "/usr/lib/python2.7/site-packages/pymysql/err.py", line 109, in 
raise_mysql_exception
    raise errorclass(errno, errval)
DBError: (pymysql.err.ProgrammingError) (1064, u"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 'member VARCHAR(255) NOT NULL, \n\tcan_share BOOL NOT 
NULL, \n\tcreated_at DATETIME N' at line 4") [SQL: u"\nCREATE TABLE 
image_members (\n\tid INTEGER NOT NULL AUTO_INCREMENT, \n\timage_id VARCHAR(36) 
NOT NULL, \n\tmember VARCHAR(255) NOT NULL, \n\tcan_share BOOL NOT NULL, 
\n\tcreated_at DATETIME NOT NULL, \n\tupdated_at DATETIME, \n\tdeleted_at 
DATETIME, \n\tdeleted BOOL NOT NULL, \n\tstatus VARCHAR(20) NOT NULL DEFAULT 
'pending', \n\tPRIMARY KEY (id), \n\tFOREIGN KEY(image_id) REFERENCES images 
(id), \n\tCONSTRAINT image_members_image_id_member_deleted_at_key UNIQUE 
(image_id, member, deleted_at), \n\tCHECK (can_share IN (0, 1)), \n\tCHECK 
(deleted IN (0, 1))\n)ENGINE=InnoDB CHARSET=utf8\n\n"] (Background on this 
error at: http://sqlalche.me/e/f405)

** Affects: glance
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to Glance.
https://bugs.launchpad.net/bugs/1837655

Title:
  glance can't be used with MySQL 8.0.17 or newer because 'member'
  became keyword

Status in Glance:
  New

Bug description:
  Since MySQL 8.0.17 'member' is reserved keyword so it can't be column name in 
'image_members' table.
  https://dev.mysql.com/doc/refman/8.0/en/keywords.html

  # rpm -qf /usr/bin/glance-manage
  openstack-glance-17.0.0-2.el7.noarch
  $ glance-manage --config-file /etc/glance/glance-api.conf db_sync
  INFO  [alembic.runtime.migration] Context impl MySQLImpl.
  INFO  [alembic.runtime.migration] Will assume non-transactional DDL.
  INFO  [alembic.runtime.migration] Running upgrade  -> liberty, liberty initial
  CRITI [glance] Unhandled error
  Traceback (most recent call last):
    File "/bin/glance-manage", line 10, in <module>
      sys.exit(main())
    File "/usr/lib/python2.7/site-packages/glance/cmd/manage.py", line 563, in 
main
      return CONF.command.action_fn()
    File "/usr/lib/python2.7/site-packages/glance/cmd/manage.py", line 395, in 
sync
      self.command_object.sync(CONF.command.version)
    File "/usr/lib/python2.7/site-packages/glance/cmd/manage.py", line 165, in 
sync
      self.expand(online_migration=False)
    File "/usr/lib/python2.7/site-packages/glance/cmd/manage.py", line 222, in 
expand
      self._sync(version=expand_head)
    File "/usr/lib/python2.7/site-packages/glance/cmd/manage.py", line 180, in 
_sync
      alembic_command.upgrade(a_config, version)
    File "/usr/lib/python2.7/site-packages/alembic/command.py", line 254, in 
upgrade
      script.run_env()
    File "/usr/lib/python2.7/site-packages/alembic/script/base.py", line 425, 
in run_env
      util.load_python_file(self.dir, 'env.py')
    File "/usr/lib/python2.7/site-packages/alembic/util/pyfiles.py", line 81, 
in load_python_file
      module = load_module_py(module_id, path)
    File "/usr/lib/python2.7/site-packages/alembic/util/compat.py", line 141, 
in load_module_py
      mod = imp.load_source(module_id, path, fp)
    File 
"/usr/lib/python2.7/site-packages/glance/db/sqlalchemy/alembic_migrations/env.py",
 line 88, in <module>
      run_migrations_online()
    File 
"/usr/lib/python2.7/site-packages/glance/db/sqlalchemy/alembic_migrations/env.py",
 line 83, in run_migrations_online
      context.run_migrations()
    File "<string>", line 8, in run_migrations
    File "/usr/lib/python2.7/site-packages/alembic/runtime/environment.py", 
line 836, in run_migrations
      self.get_context().run_migrations(**kw)
    File "/usr/lib/python2.7/site-packages/alembic/runtime/migration.py", line 
330, in run_migrations
      step.migration_fn(**kw)
    File 
"/usr/lib/python2.7/site-packages/glance/db/sqlalchemy/alembic_migrations/versions/liberty_initial.py",
 line 37, in upgrade
      add_images_tables.upgrade()
    File 
"/usr/lib/python2.7/site-packages/glance/db/sqlalchemy/alembic_migrations/add_images_tables.py",
 line 200, in upgrade
      _add_image_members_table()
    File 
"/usr/lib/python2.7/site-packages/glance/db/sqlalchemy/alembic_migrations/add_images_tables.py",
 line 155, in _add_image_members_table
      extend_existing=True)
    File "<string>", line 8, in create_table
    File "<string>", line 3, in create_table
    File "/usr/lib/python2.7/site-packages/alembic/operations/ops.py", line 
1120, in create_table
      return operations.invoke(op)
    File "/usr/lib/python2.7/site-packages/alembic/operations/base.py", line 
319, in invoke
      return fn(self, operation)
    File "/usr/lib/python2.7/site-packages/alembic/operations/toimpl.py", line 
101, in create_table
      operations.impl.create_table(table)
    File "/usr/lib/python2.7/site-packages/alembic/ddl/impl.py", line 194, in 
create_table
      self._exec(schema.CreateTable(table))
    File "/usr/lib/python2.7/site-packages/alembic/ddl/impl.py", line 118, in 
_exec
      return conn.execute(construct, *multiparams, **params)
    File "/usr/lib64/python2.7/site-packages/sqlalchemy/engine/base.py", line 
948, in execute
      return meth(self, multiparams, params)
    File "/usr/lib64/python2.7/site-packages/sqlalchemy/sql/ddl.py", line 68, 
in _execute_on_connection
      return connection._execute_ddl(self, multiparams, params)
    File "/usr/lib64/python2.7/site-packages/sqlalchemy/engine/base.py", line 
1009, in _execute_ddl
      compiled
    File "/usr/lib64/python2.7/site-packages/sqlalchemy/engine/base.py", line 
1200, in _execute_context
      context)
    File "/usr/lib64/python2.7/site-packages/sqlalchemy/engine/base.py", line 
1409, in _handle_dbapi_exception
      util.raise_from_cause(newraise, exc_info)
    File "/usr/lib64/python2.7/site-packages/sqlalchemy/util/compat.py", line 
203, in raise_from_cause
      reraise(type(exception), exception, tb=exc_tb, cause=cause)
    File "/usr/lib64/python2.7/site-packages/sqlalchemy/engine/base.py", line 
1193, in _execute_context
      context)
    File "/usr/lib64/python2.7/site-packages/sqlalchemy/engine/default.py", 
line 507, in do_execute
      cursor.execute(statement, parameters)
    File "/usr/lib/python2.7/site-packages/pymysql/cursors.py", line 170, in 
execute
      result = self._query(query)
    File "/usr/lib/python2.7/site-packages/pymysql/cursors.py", line 328, in 
_query
      conn.query(q)
    File "/usr/lib/python2.7/site-packages/pymysql/connections.py", line 516, 
in query
      self._affected_rows = self._read_query_result(unbuffered=unbuffered)
    File "/usr/lib/python2.7/site-packages/pymysql/connections.py", line 727, 
in _read_query_result
      result.read()
    File "/usr/lib/python2.7/site-packages/pymysql/connections.py", line 1066, 
in read
      first_packet = self.connection._read_packet()
    File "/usr/lib/python2.7/site-packages/pymysql/connections.py", line 683, 
in _read_packet
      packet.check_error()
    File "/usr/lib/python2.7/site-packages/pymysql/protocol.py", line 220, in 
check_error
      err.raise_mysql_exception(self._data)
    File "/usr/lib/python2.7/site-packages/pymysql/err.py", line 109, in 
raise_mysql_exception
      raise errorclass(errno, errval)
  DBError: (pymysql.err.ProgrammingError) (1064, u"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 'member VARCHAR(255) NOT NULL, \n\tcan_share BOOL 
NOT NULL, \n\tcreated_at DATETIME N' at line 4") [SQL: u"\nCREATE TABLE 
image_members (\n\tid INTEGER NOT NULL AUTO_INCREMENT, \n\timage_id VARCHAR(36) 
NOT NULL, \n\tmember VARCHAR(255) NOT NULL, \n\tcan_share BOOL NOT NULL, 
\n\tcreated_at DATETIME NOT NULL, \n\tupdated_at DATETIME, \n\tdeleted_at 
DATETIME, \n\tdeleted BOOL NOT NULL, \n\tstatus VARCHAR(20) NOT NULL DEFAULT 
'pending', \n\tPRIMARY KEY (id), \n\tFOREIGN KEY(image_id) REFERENCES images 
(id), \n\tCONSTRAINT image_members_image_id_member_deleted_at_key UNIQUE 
(image_id, member, deleted_at), \n\tCHECK (can_share IN (0, 1)), \n\tCHECK 
(deleted IN (0, 1))\n)ENGINE=InnoDB CHARSET=utf8\n\n"] (Background on this 
error at: http://sqlalche.me/e/f405)

To manage notifications about this bug go to:
https://bugs.launchpad.net/glance/+bug/1837655/+subscriptions

-- 
Mailing list: https://launchpad.net/~yahoo-eng-team
Post to     : yahoo-eng-team@lists.launchpad.net
Unsubscribe : https://launchpad.net/~yahoo-eng-team
More help   : https://help.launchpad.net/ListHelp

Reply via email to