Trove use postgresql as backend database make a fault.
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
OpenStack DBaaS (Trove) |
New
|
Undecided
|
Unassigned |
Bug Description
When using Postgresql as the back-end database, the database synchronization script error occurs because the script still uses the mysql data type and postgresql does not recognize it. For example, the Boolean field is True or False with PostgreSQL, while MySQL is represented by 1 or 0. The specific error message is as follows:
"/var/log/
2018-04-03 16:50:58.622 808946 ERROR root File "/usr/lib/
2018-04-03 16:50:58.622 808946 ERROR root migration.
2018-04-03 16:50:58.622 808946 ERROR root File "/usr/lib/
2018-04-03 16:50:58.622 808946 ERROR root upgrade(options, version=version, repo_path=
2018-04-03 16:50:58.622 808946 ERROR root File "/usr/lib/
2018-04-03 16:50:58.622 808946 ERROR root return versioning_
2018-04-03 16:50:58.622 808946 ERROR root File "/usr/lib/
2018-04-03 16:50:58.622 808946 ERROR root return _migrate(url, repository, version, upgrade=True, err=err, **opts)
2018-04-03 16:50:58.622 808946 ERROR root File "<decorator-
2018-04-03 16:50:58.622 808946 ERROR root File "/usr/lib/
2018-04-03 16:50:58.622 808946 ERROR root return f(*a, **kw)
2018-04-03 16:50:58.622 808946 ERROR root File "/usr/lib/
2018-04-03 16:50:58.622 808946 ERROR root schema.
2018-04-03 16:50:58.622 808946 ERROR root File "/usr/lib/
2018-04-03 16:50:58.622 808946 ERROR root change.
2018-04-03 16:50:58.622 808946 ERROR root File "/usr/lib/
2018-04-03 16:50:58.622 808946 ERROR root script_func(engine)
2018-04-03 16:50:58.622 808946 ERROR root File "/usr/lib/
2018-04-03 16:50:58.622 808946 ERROR root modules.
2018-04-03 16:50:58.622 808946 ERROR root File "/usr/lib/
2018-04-03 16:50:58.622 808946 ERROR root column.
2018-04-03 16:50:58.622 808946 ERROR root File "/usr/lib/
2018-04-03 16:50:58.622 808946 ERROR root engine.
2018-04-03 16:50:58.622 808946 ERROR root File "/usr/lib/
2018-04-03 16:50:58.622 808946 ERROR root return connection.
2018-04-03 16:50:58.622 808946 ERROR root File "/usr/lib/
2018-04-03 16:50:58.622 808946 ERROR root return meth(self, multiparams, params)
2018-04-03 16:50:58.622 808946 ERROR root File "/usr/lib/
2018-04-03 16:50:58.622 808946 ERROR root return connection.
2018-04-03 16:50:58.622 808946 ERROR root File "/usr/lib/
2018-04-03 16:50:58.622 808946 ERROR root compiled_sql, distilled_params
2018-04-03 16:50:58.622 808946 ERROR root File "/usr/lib/
2018-04-03 16:50:58.622 808946 ERROR root context)
2018-04-03 16:50:58.622 808946 ERROR root File "/usr/lib/
2018-04-03 16:50:58.622 808946 ERROR root exc_info
2018-04-03 16:50:58.622 808946 ERROR root File "/usr/lib/
2018-04-03 16:50:58.622 808946 ERROR root reraise(
2018-04-03 16:50:58.622 808946 ERROR root File "/usr/lib/
2018-04-03 16:50:58.622 808946 ERROR root context)
2018-04-03 16:50:58.622 808946 ERROR root File "/usr/lib/
2018-04-03 16:50:58.622 808946 ERROR root cursor.
2018-04-03 16:50:58.622 808946 ERROR root ProgrammingError: (psycopg2.
2018-04-03 16:50:58.622 808946 ERROR root LINE 1: UPDATE modules SET priority_apply=0
2018-04-03 16:50:58.622 808946 ERROR root ^
2018-04-03 16:50:58.622 808946 ERROR root HINT: You will need to rewrite or cast the expression.
2018-04-03 16:50:58.622 808946 ERROR root [SQL: 'UPDATE modules SET priority_
2018-04-03 16:50:58.622 808946 ERROR root
And the script source :
from sqlalchemy.schema import Column
from sqlalchemy.schema import MetaData
from sqlalchemy.
from trove.db.
from trove.db.
from trove.db.
from trove.db.
COLUMN_NAME_1 = 'priority_apply'
COLUMN_NAME_2 = 'apply_order'
COLUMN_NAME_3 = 'is_admin'
def upgrade(
meta = MetaData()
meta.bind = migrate_engine
modules = Table('modules', meta, autoload=True)
is_nullable = True if migrate_engine.name == "sqlite" else False
column = Column(
modules.
column = Column(
modules.
column = Column(
modules.
modules.
# mark all non-visible, auto-apply and all-tenant modules as is_admin
update(
However,the /etc/trove/
#connection = postgresql:
And now ,i want to know that how to fix this problem .
summary: |
- Trove install with + Trove use postgresql as backend database make a fault. |
affects: | openstack-manuals → trove |
I have this bug too:
2018-09-27 10:53:51.868 29993 INFO migrate. versioning. api [-] 39 -> 40... versioning. util [-] Disposing SQLAlchemy engine Engine( postgresql: //trove: ***@controller/ trove) with_engine /usr/lib/ python2. 7/dist- packages/ migrate/ versioning/ util/__ init__. py:170 ProgrammingErro r) column "priority_apply" is of type boolean but expression is of type integer
^ apply=% (priority_ apply)s' ] [parameters: {'priority_apply': 0}] trove-manage" , line 10, in <module> python2. 7/dist- packages/ trove/cmd/ manage. py", line 288, in main ).execute( ) python2. 7/dist- packages/ trove/cmd/ manage. py", line 59, in execute **kwargs) python2. 7/dist- packages/ trove/cmd/ manage. py", line 44, in db_sync api.db_ sync(CONF, repo_path= repo_path) python2. 7/dist- packages/ trove/db/ sqlalchemy/ api.py" , line 108, in db_sync db_sync( options, version, repo_path) python2. 7/dist- packages/ trove/db/ sqlalchemy/ migration. py", line 106, in db_sync repo_path) python2. 7/dist- packages/ trove/db/ sqlalchemy/ migration. py", line 64, in upgrade api.upgrade( sql_connection, repo_path, version) python2. 7/dist- packages/ migrate/ versioning/ api.py" , line 186, in upgrade gen-15> ", line 2, in _migrate python2. 7/dist- packages/ migrate/ versioning/ util/__ init__. py", line 167, in with_engine python2. 7/dist- packages/ migrate/ versioning/ api.py" , line 366, in _migrate runchange( ver, change, changeset.step) python2. 7/dist- packages/ migrate/ versioning/ schema. py", line 93, in runchange
2018-09-27 10:53:51.917 29993 DEBUG migrate.
2018-09-27 10:53:51.919 29993 CRITICAL root [-] Unhandled error: ProgrammingError: (psycopg2.
LINE 1: UPDATE modules SET priority_apply=0
HINT: You will need to rewrite or cast the expression.
[SQL: 'UPDATE modules SET priority_
2018-09-27 10:53:51.919 29993 ERROR root Traceback (most recent call last):
2018-09-27 10:53:51.919 29993 ERROR root File "/usr/bin/
2018-09-27 10:53:51.919 29993 ERROR root sys.exit(main())
2018-09-27 10:53:51.919 29993 ERROR root File "/usr/lib/
2018-09-27 10:53:51.919 29993 ERROR root Commands(
2018-09-27 10:53:51.919 29993 ERROR root File "/usr/lib/
2018-09-27 10:53:51.919 29993 ERROR root exec_method(
2018-09-27 10:53:51.919 29993 ERROR root File "/usr/lib/
2018-09-27 10:53:51.919 29993 ERROR root self.db_
2018-09-27 10:53:51.919 29993 ERROR root File "/usr/lib/
2018-09-27 10:53:51.919 29993 ERROR root migration.
2018-09-27 10:53:51.919 29993 ERROR root File "/usr/lib/
2018-09-27 10:53:51.919 29993 ERROR root upgrade(options, version=version, repo_path=
2018-09-27 10:53:51.919 29993 ERROR root File "/usr/lib/
2018-09-27 10:53:51.919 29993 ERROR root return versioning_
2018-09-27 10:53:51.919 29993 ERROR root File "/usr/lib/
2018-09-27 10:53:51.919 29993 ERROR root return _migrate(url, repository, version, upgrade=True, err=err, **opts)
2018-09-27 10:53:51.919 29993 ERROR root File "<decorator-
2018-09-27 10:53:51.919 29993 ERROR root File "/usr/lib/
2018-09-27 10:53:51.919 29993 ERROR root return f(*a, **kw)
2018-09-27 10:53:51.919 29993 ERROR root File "/usr/lib/
2018-09-27 10:53:51.919 29993 ERROR root schema.
2018-09-27 10:53:51.919 29993 ERROR root File "/usr/lib/
201...