Public bug reported: I've tried to install openstack/tacker on Ubuntu20.04, but failed because for gnocchi possibly. Tacker's monitoring depends on ceilometer and it uses gnocchi. On Ubuntu20.04, devstack installation fails for duplicated check constraint name in `gnocchi-upgrade` which is an initialization command for gnocchi. It doesn't happen on Ubuntu18.04.
In my install log below, it says "Duplicate check constraint name 'ck_started_before_ended'.". Although I don't know how `gnocchi-upgrade` works so much, it seems the schema is defined in [2]. The same symbol `ck_started_before_ended` is used for two tables, `resource` and `resource_history`, and failed to create second one. I used the latest devstack (commit 647fef0b405deea635a710c124d508a59e6d1119) and tacker(commit 896d03804def46b1365c92a8040995ca571983f2). `local.conf` is for all-in- one mode with Kubernetes described in [3]. Although I'm not sure which of ceilometer or gnocchi should be fixed actually, I appreciate if you give me some advice. Thanks. [1] https://wiki.openstack.org/wiki/Gnocchi [2] https://github.com/gnocchixyz/gnocchi/blob/master/gnocchi/indexer/alembic/versions/40c6aae14c3f_ck_started_before_ended.py [3] https://docs.openstack.org/tacker/latest/install/devstack.html ---------------------------------------------- Here is my log ---------------------------------------- 2020-07-30 14:27:10,341 [143612] INFO gnocchi.cli.manage: Upgrading indexer SQLAlchemyIndexer: mysql+pymysql://***:***@127.0.0.1/gnocchi?charset=utf8 2020-07-30 14:27:10,351 [143612] WARNING py.warnings: /usr/local/lib/python3.8/dist-packages/pymysql/cursors.py:170: Warning: (3719, "'utf8' is currently an alias for the character set UTF8MB3, but will be an alias for UTF8MB4 in a future release. Please consider using UTF8MB4 in order to be unambiguous.") result = self._query(query) 2020-07-30 14:27:10,385 [143612] WARNING oslo_db.sqlalchemy.exc_filters: DBAPIError exception wrapped. Traceback (most recent call last): File "/usr/local/lib/python3.8/dist-packages/sqlalchemy/engine/base.py", line 1277, in _execute_context self.dialect.do_execute( File "/usr/local/lib/python3.8/dist-packages/sqlalchemy/engine/default.py", line 593, in do_execute cursor.execute(statement, parameters) File "/usr/local/lib/python3.8/dist-packages/pymysql/cursors.py", line 170, in execute result = self._query(query) File "/usr/local/lib/python3.8/dist-packages/pymysql/cursors.py", line 328, in _query conn.query(q) File "/usr/local/lib/python3.8/dist-packages/pymysql/connections.py", line 517, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "/usr/local/lib/python3.8/dist-packages/pymysql/connections.py", line 732, in _read_query_result result.read() File "/usr/local/lib/python3.8/dist-packages/pymysql/connections.py", line 1075, in read first_packet = self.connection._read_packet() File "/usr/local/lib/python3.8/dist-packages/pymysql/connections.py", line 684, in _read_packet packet.check_error() File "/usr/local/lib/python3.8/dist-packages/pymysql/protocol.py", line 220, in check_error err.raise_mysql_exception(self._data) File "/usr/local/lib/python3.8/dist-packages/pymysql/err.py", line 109, in raise_mysql_exception raise errorclass(errno, errval) pymysql.err.InternalError: (3822, "Duplicate check constraint name 'ck_started_before_ended'.") 2020-07-30 14:27:10,392 [143612] CRITICAL root: Traceback (most recent call last): File "/usr/local/lib/python3.8/dist-packages/sqlalchemy/engine/base.py", line 1277, in _execute_context self.dialect.do_execute( File "/usr/local/lib/python3.8/dist-packages/sqlalchemy/engine/default.py", line 593, in do_execute cursor.execute(statement, parameters) File "/usr/local/lib/python3.8/dist-packages/pymysql/cursors.py", line 170, in execute result = self._query(query) File "/usr/local/lib/python3.8/dist-packages/pymysql/cursors.py", line 328, in _query conn.query(q) File "/usr/local/lib/python3.8/dist-packages/pymysql/connections.py", line 517, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "/usr/local/lib/python3.8/dist-packages/pymysql/connections.py", line 732, in _read_query_result result.read() File "/usr/local/lib/python3.8/dist-packages/pymysql/connections.py", line 1075, in read first_packet = self.connection._read_packet() File "/usr/local/lib/python3.8/dist-packages/pymysql/connections.py", line 684, in _read_packet packet.check_error() File "/usr/local/lib/python3.8/dist-packages/pymysql/protocol.py", line 220, in check_error err.raise_mysql_exception(self._data) File "/usr/local/lib/python3.8/dist-packages/pymysql/err.py", line 109, in raise_mysql_exception raise errorclass(errno, errval) pymysql.err.InternalError: (3822, "Duplicate check constraint name 'ck_started_before_ended'.") The above exception was the direct cause of the following exception: Traceback (most recent call last): File "/usr/local/bin/gnocchi-upgrade", line 11, in <module> load_entry_point('gnocchi', 'console_scripts', 'gnocchi-upgrade')() File "/opt/stack/devstack/src/gnocchi/gnocchi/cli/manage.py", line 69, in upgrade index.upgrade() File "/opt/stack/devstack/src/gnocchi/gnocchi/indexer/sqlalchemy.py", line 334, in upgrade Base.metadata.create_all(connection) File "/usr/local/lib/python3.8/dist-packages/sqlalchemy/sql/schema.py", line 4546, in create_all bind._run_visitor( File "/usr/local/lib/python3.8/dist-packages/sqlalchemy/engine/base.py", line 1657, in _run_visitor visitorcallable(self.dialect, self, **kwargs).traverse_single(element) File "/usr/local/lib/python3.8/dist-packages/sqlalchemy/sql/visitors.py", line 144, in traverse_single return meth(obj, **kw) File "/usr/local/lib/python3.8/dist-packages/sqlalchemy/sql/ddl.py", line 783, in visit_metadata self.traverse_single( File "/usr/local/lib/python3.8/dist-packages/sqlalchemy/sql/visitors.py", line 144, in traverse_single return meth(obj, **kw) File "/usr/local/lib/python3.8/dist-packages/sqlalchemy/sql/ddl.py", line 827, in visit_table self.connection.execute( File "/usr/local/lib/python3.8/dist-packages/sqlalchemy/engine/base.py", line 1014, in execute return meth(self, multiparams, params) File "/usr/local/lib/python3.8/dist-packages/sqlalchemy/sql/ddl.py", line 72, in _execute_on_connection return connection._execute_ddl(self, multiparams, params) File "/usr/local/lib/python3.8/dist-packages/sqlalchemy/engine/base.py", line 1071, in _execute_ddl ret = self._execute_context( File "/usr/local/lib/python3.8/dist-packages/sqlalchemy/engine/base.py", line 1317, in _execute_context self._handle_dbapi_exception( File "/usr/local/lib/python3.8/dist-packages/sqlalchemy/engine/base.py", line 1509, in _handle_dbapi_exception util.raise_(newraise, with_traceback=exc_info[2], from_=e) File "/usr/local/lib/python3.8/dist-packages/sqlalchemy/util/compat.py", line 178, in raise_ raise exception File "/usr/local/lib/python3.8/dist-packages/sqlalchemy/engine/base.py", line 1277, in _execute_context self.dialect.do_execute( File "/usr/local/lib/python3.8/dist-packages/sqlalchemy/engine/default.py", line 593, in do_execute cursor.execute(statement, parameters) File "/usr/local/lib/python3.8/dist-packages/pymysql/cursors.py", line 170, in execute result = self._query(query) File "/usr/local/lib/python3.8/dist-packages/pymysql/cursors.py", line 328, in _query conn.query(q) File "/usr/local/lib/python3.8/dist-packages/pymysql/connections.py", line 517, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "/usr/local/lib/python3.8/dist-packages/pymysql/connections.py", line 732, in _read_query_result result.read() File "/usr/local/lib/python3.8/dist-packages/pymysql/connections.py", line 1075, in read first_packet = self.connection._read_packet() File "/usr/local/lib/python3.8/dist-packages/pymysql/connections.py", line 684, in _read_packet packet.check_error() File "/usr/local/lib/python3.8/dist-packages/pymysql/protocol.py", line 220, in check_error err.raise_mysql_exception(self._data) File "/usr/local/lib/python3.8/dist-packages/pymysql/err.py", line 109, in raise_mysql_exception raise errorclass(errno, errval) oslo_db.exception.DBError: (pymysql.err.InternalError) (3822, "Duplicate check constraint name 'ck_started_before_ended'.") [SQL: CREATE TABLE resource_history ( creator VARCHAR(255), started_at DATETIME(6) NOT NULL, revision_start DATETIME(6) NOT NULL, ended_at DATETIME(6), user_id VARCHAR(255), project_id VARCHAR(255), original_resource_id VARCHAR(255) NOT NULL, revision INTEGER NOT NULL AUTO_INCREMENT, id BINARY(16) NOT NULL, revision_end DATETIME(6) NOT NULL, type VARCHAR(255) NOT NULL, PRIMARY KEY (revision), CONSTRAINT ck_started_before_ended CHECK (started_at <= ended_at), CONSTRAINT fk_rh_id_resource_id FOREIGN KEY(id) REFERENCES resource (id) ON DELETE CASCADE, CONSTRAINT fk_resource_history_resource_type_name FOREIGN KEY(type) REFERENCES resource_type (name) ON DELETE RESTRICT )CHARSET=utf8 ENGINE=InnoDB ] (Background on this error at: http://sqlalche.me/e/13/2j85) ** Affects: ceilometer (Ubuntu) Importance: Undecided Status: New -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1889752 Title: devstack fails for duplicated check constraint name in gnocchi To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/ceilometer/+bug/1889752/+subscriptions -- ubuntu-bugs mailing list [email protected] https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs
