我无法在IBM云中或通过Python ibm_db API执行SQL查询。连接被拒绝。
我已经注册了IBM云服务。我能够启动DB2实例并成功创建连接。但是,当我从云内部启动控制台并尝试运行SQL查询时,连接被拒绝。如果我通过Python使用ibm_db API,也会发生相同的拒绝。我已尽力输入了正确的详细信息。但是有一件事,我注意到自动创建的连接密码没有大写字母,并且在某处总是有一个+号。另外,如何更改连接密码?
```python
import ibm_db
#Replace the placeholder values with your actual Db2 hostname, username, and password:
dsn_hostname = "somehostname" # e.g.: "dashdb-txn-sbox-yp-dal09-04.services.dal.bluemix.net"
dsn_uid = "abc12345" # e.g. "abc12345"
dsn_pwd = "6fabcde57+ghijkl8" # e.g. "7dBZ3wWt9XN6$o0J"
dsn_driver = "{IBM DB2 ODBC DRIVER}"
dsn_database = "BLUDB" # e.g. "BLUDB"
dsn_port = "50000" # e.g. "50000"
dsn_protocol = "TCPIP" # i.e. "TCPIP"
dsn = (
"DRIVER={0};"
"DATABASE={1};"
"HOSTNAME={2};"
"PORT={3};"
"PROTOCOL={4};"
"UID={5};"
"PWD={6};").format(dsn_driver, dsn_database, dsn_hostname, dsn_port, dsn_protocol, dsn_uid, dsn_pwd)
try:
conn = ibm_db.connect(dsn, "", "")
print ("Connected to database: ", dsn_database, "as user: ", dsn_uid, "on host: ", dsn_hostname)
except:
print ("Unable to connect: ", ibm_db.conn_errormsg() )
```
[IBM] [CLI驱动程序] SQL30082N安全处理失败,原因为“ 24”(“用户名和/或密码无效”)。 SQLSTATE = 08001 SQLCODE = -30082
当我尝试通过DB2云控制台运行SQL查询时,也会发生类似错误。
Image describing the error from the IBM cloud DB2 SQL console
谢谢您的时间
答案 0 :(得分:2)
我遇到了同样的问题。最后我发现,问题出在 Db2 实例本身。尝试删除此实例并在 IBM Cloud 中创建新实例。但是,请确保例如为达拉斯(而非伦敦)选择的位置。并且不要忘记创建新凭据并在您的代码中更新它们。
答案 1 :(得分:0)
我偶然发现了。 每当我启动Db2数据库时,它都会说可能需要一些时间来进行设置。我忽略了它,因为它立即打印出“ provisioned”。那时我曾经直接创建连接并开始使用SQL查询。它没有用。
但是,上次(当它起作用时)我创建了一个Db2实例,然后一两天都无法登录到IBM Cloud。下次登录时,它可以完美地接受SQL查询!我继续并创建了一个连接,以便可以通过本地Jupyter笔记本工作,并且也可以工作。
因此,我想在这种情况下,解决方案是等待,而不是继续创建和删除Db2实例,以希望它开始工作。如果确实如此,IBM员工可以更好地发表评论,但暂时我很高兴。 希望这对将来有所帮助。