pymysql.err.InternalError:(1049,“未知数据库”)
Posted
技术标签:
【中文标题】pymysql.err.InternalError:(1049,“未知数据库”)【英文标题】:pymysql.err.InternalError: (1049, "Unknown database") 【发布时间】:2019-04-23 01:19:31 【问题描述】:我想使用 raspberrypi 中的 python 连接 mysql RDS DB。(我想使用 select 查询从 MySQL 表 'face' 获取 seq。)
我有一个错误,但我无法修复它。
这是rds mysql连接代码:
import rds_config
import pymysql
rds_host = rds_config.rds_host
name = rds_config.rds_user
password = rds_config.rds_pwd
db_name = rds_config.rds_db
conn = pymysql.connect(rds_host, user=name, passwd=password, db=db_name,
connect_timeout=10)
with conn.cursor() as cur:
cur.execute("select seq from face")
conn.commit()
rds_config:
rds_host='rds endpoint'
rds_port=3306
rds_user='user'
rds_pwd='password'
rds_db='db name'
这是回溯:
Traceback (most recent call last):
File "getRds.py", line 18, in <module>
conn = pymysql.connect(rds_host, user=name, passwd=password, db=db_name, connect_timeout=10)
File "/usr/local/lib/python2.7/dist-packages/pymysql/__init__.py", line 94, in Connect
return Connection(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 327, in __init__
self.connect()
File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 598, in connect
self._request_authentication()
File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 862, in _request_authentication
auth_packet = self._process_auth(plugin_name, auth_packet)
File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 933, in _process_auth
pkt = self._read_packet()
File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 683, in _read_packet
packet.check_error()
File "/usr/local/lib/python2.7/dist-packages/pymysql/protocol.py", line 220, in check_error
err.raise_mysql_exception(self._data)
File "/usr/local/lib/python2.7/dist-packages/pymysql/err.py", line 109, in raise_mysql_exception
raise errorclass(errno, errval)
pymysql.err.InternalError: (1049, u"Unknown database 'bsb-rds'")
我已经在 vpc 安全组中添加了 IP 地址,并且公共访问已开启。 可以通过 mysql cli 或 workbench 进行连接。
谁能帮助我?
【问题讨论】:
再次检查数据库名称Unknown database 'bsb-rds'
,如果名称正确则创建它。
【参考方案1】:
我遇到了您的确切问题,我相信我有解决方案:
上下文: 我的技术栈如下所示
使用 AWS RDS (MySQL) 在本地主机上使用 Flask 开发 RDS 实例名称:“test-rds” 实际数据库名称:test-database这是我的问题所在,我相信您的问题在同一个地方:
您在连接中使用的是 AWS RDS NAME,而不是使用真正的 数据库名称。
只需将连接中的数据库名称更改为我通过 MySQL Workbench 设置的真实数据库名称即可解决问题。
读者需要注意的其他事项:
请确保以下几点:
如果您从 AWS VPC 外部进行连接,请确保您已启用公共访问。这是一个巨大的“陷阱”。 (注意安全风险) 确保您的连接没有被 NACL 阻止 确保安全组规则允许您的连接【讨论】:
【参考方案2】:tl;博士你需要创建bsb-rd
。执行此命令:create database bsb-rds
在 python 或您最喜欢的 sql cli 中使用 cur.execute()
。
如果您收到此错误,好消息!您可以连接到您的 RDS 实例。这意味着您已经正确设置了安全组,主机 url、用户名、密码和端口都正确!此错误告诉您的是您的数据库 bsb-rds
在您的 RDS 实例上不存在。如果您刚刚创建了 RDS 实例,可能是因为您还没有创建数据库。所以创造吧!
这里有两种方法可以做到这一点
mysql 命令行
在你的终端运行
mysql --host=the_host_address user=your_user_name --password=your_password
然后在mysql shell里面执行
create database bsb-rd;
现在再次尝试您的代码!
Python 与 pymysql
import rds_config
conn = pymysql.connect('hostname', user='username', passwd='password', connect_timeout=10)
with conn.cursor() as cur:
cur.execute('create database bsb-rd;')
我来到这个页面寻找解决方案,但没有得到它。我最终找到了答案,现在分享对我有帮助的东西。
【讨论】:
以上是关于pymysql.err.InternalError:(1049,“未知数据库”)的主要内容,如果未能解决你的问题,请参考以下文章
pymysql.err.InternalError:(1049,“未知数据库”)
InternalError: (pymysql.err.InternalError) (1205, u'Lock wait timeout exceeded; try restarting t
pymysql.err.InternalError: (1054, "Unknown column 'None' in 'field list'")