pymysql.err.internalerror:(1049,“未知数据库”)

gzszwxb4  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(663)

我想用raspberrypi中的python连接mysql-rds-db(我想用selectquery从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\配置:

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进行连接。
有人能帮我吗?

cygmwpex

cygmwpex1#

我遇到了你的问题,我相信我有解决办法:
上下文:我的技术堆栈如下所示
使用aws rds(mysql)
在本地主机上使用flask开发
rds示例名称:“test rds”
实际数据库名称:测试数据库
这就是我的问题所在,我相信你的问题也在同一个地方:
您在连接中使用的是aws rds名称,而不是真正的数据库名称。
只需将连接中的db名称更改为我通过mysql工作台设置的真实db名称,就可以解决这个问题。
其他读者注意事项:
请确保:
如果您是从aws专有网络外部连接,请确保已启用公共访问。这是一个巨大的“明白了”(注意安全风险)
确保你的连接没有被网络阻塞
确保安全组规则允许您的连接

相关问题