<div dir="ltr"><div style>(raising to the mailing list)</div><div><br></div>Which DB2 driver are you using? I was referring to: <a href="http://code.google.com/p/ibm-db/wiki/README">http://code.google.com/p/ibm-db/wiki/README</a><div>
<br></div><div style>... which shows an example connection string for sqlalchemy as:</div><div><br></div><div>>>> db2 = sqlalchemy.create_engine('ibm_db_sa://<a href="http://db2inst1:secret@host.name.com:50000/pydev">db2inst1:secret@host.name.com:50000/pydev</a>')<br>
<div class="gmail_extra"><div><div><br></div>-Dolph</div>
<br><br><div class="gmail_quote">On Thu, Dec 20, 2012 at 4:05 AM, Kevin-Yang <span dir="ltr"><<a href="mailto:benbenzhuforever@gmail.com" target="_blank">benbenzhuforever@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
Dolph,<br>
<br>
Really appreciated for your response.<br>
<br>
My VM configuration is:<br>
<br>
OS -><br>
Red Hat Enterprise Linux Server release 6.3 (Santiago)<br>
<br>
DB2 -><br>
Informational tokens are "DB2 v9.7.0.0", "s090521", "LINUXAMD6497", and Fix<br>
Pack "0"<br>
ibm_db -> <a href="http://pypi.python.org/packages/source/i/ibm_db/ibm_db-2.0.0.tar.gz#md5=709c576c0ec2379ca15049f5c861beb1" target="_blank">http://pypi.python.org/packages/source/i/ibm_db/ibm_db-2.0.0.tar.gz#md5=709c576c0ec2379ca15049f5c861beb1</a><br>

ibm_db_sa -><br>
<br>
When i changed from "ibmdb" -> "ibm_db_sa", I came with a different error -> Could not determine dialect for 'ibm_db_sa'.<br>
##################################################################################<br>
<div class="im">Traceback (most recent call last):<br>
  File "/usr/local/bin/keystone-manage", line 5, in <module><br>
    pkg_resources.run_script('keystone==2012.2', 'keystone-manage')<br>
  File "build/bdist.linux-x86_64/egg/pkg_resources.py", line 499, in run_script<br>
  File "build/bdist.linux-x86_64/egg/pkg_resources.py", line 1239, in run_script<br>
  File "/usr/local/lib/python2.7/site-packages/keystone-2012.2-py2.7.egg/EGG-INFO/scripts/keystone-manage", line 28, in <module><br>
    cli.main(argv=sys.argv, config_files=config_files)<br>
  File "/usr/local/lib/python2.7/site-packages/keystone-2012.2-py2.7.egg/keystone/cli.py", line 164, in main<br>
    return run(cmd, (args[:1] + args[2:]))<br>
  File "/usr/local/lib/python2.7/site-packages/keystone-2012.2-py2.7.egg/keystone/cli.py", line 147, in run<br>
    return CMDS[cmd](argv=args).run()<br>
  File "/usr/local/lib/python2.7/site-packages/keystone-2012.2-py2.7.egg/keystone/cli.py", line 35, in run<br>
    return self.main()<br>
  File "/usr/local/lib/python2.7/site-packages/keystone-2012.2-py2.7.egg/keystone/cli.py", line 56, in main<br>
    driver.db_sync()<br>
  File "/usr/local/lib/python2.7/site-packages/keystone-2012.2-py2.7.egg/keystone/identity/backends/sql.py", line 136, in db_sync<br>
    migration.db_sync()<br>
</div>  File "/usr/local/lib/python2.7/site-packages/keystone-2012.2-py2.7.egg/keystone/common/sql/migration.py", line 49, in db_sync<br>
    current_version = db_version()<br>
  File "/usr/local/lib/python2.7/site-packages/keystone-2012.2-py2.7.egg/keystone/common/sql/migration.py", line 61, in db_version<br>
    return versioning_api.db_version(CONF.sql.connection, repo_path)<br>
  File "<string>", line 2, in db_version<br>
  File "/usr/local/lib/python2.7/site-packages/migrate/versioning/util/__init__.py", line 155, in with_engine<br>
    engine = construct_engine(url, **kw)<br>
  File "/usr/local/lib/python2.7/site-packages/migrate/versioning/util/__init__.py", line 140, in construct_engine<br>
    return create_engine(engine, **kwargs)<br>
  File "build/bdist.linux-x86_64/egg/sqlalchemy/engine/__init__.py", line 338, in create_engine<br>
  File "build/bdist.linux-x86_64/egg/sqlalchemy/engine/strategies.py", line 50, in create<br>
  File "build/bdist.linux-x86_64/egg/sqlalchemy/engine/url.py", line 123, in get_dialect<br>
<br>
sqlalchemy.exc.ArgumentError: Could not determine dialect for 'ibm_db_sa'.<br>
##################################################################################<br>
<div class=""><div class="h5"><br>
--<br>
You received this bug notification because you are a bug assignee.<br>
<a href="https://bugs.launchpad.net/bugs/987121" target="_blank">https://bugs.launchpad.net/bugs/987121</a><br>
<br>
Title:<br>
  strict constraint for database table creation<br>
<br>
Status in OpenStack Identity (Keystone):<br>
  Fix Released<br>
<br>
Bug description:<br>
  OpenStack claims that any type of database supporting SQLAlchemy can be taken as the database for OpenStack use.<br>
  In some databases, if a column is defined as UNIQUE, it must be specified NOT NULL at the same time, e.g. IBM DB2, which is SQLAlchemy supporting. I am doing some tests with DB2 now.<br>
  For the tables TENANT, USER and ROLE, they all have the column NAME, but they don't define this column NOT NULL. For database like MYSQL, it is permitted and keystone-manage db_sync works well. However, for database with strict constrains, like IBM DB2, this is not allowed. Running keystone-manage db_sync will prompt the error, which tells me UNIQUE and NOT NULL must be specified for the column NAME.<br>

  Suggestion:<br>
  In the code keystone/identity/backends/sql.py, we have<br>
  name = sql.Column(sql.String(64), unique=True)<br>
<br>
  If we change it into<br>
  name = sql.Column(sql.String(64), unique=True, nullable=False),<br>
  this issue will be solved.<br>
<br>
To manage notifications about this bug go to:<br>
<a href="https://bugs.launchpad.net/keystone/+bug/987121/+subscriptions" target="_blank">https://bugs.launchpad.net/keystone/+bug/987121/+subscriptions</a><br>
</div></div></blockquote></div><br></div></div></div>