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

时间:2018-11-20 14:54:17

标签: python mysql amazon-web-services amazon-rds boto3

我想使用raspberrypi中的python连接MySQL RDS DB。(我想使用选择查询从MySQL表'face'中获取seq。)

我有一个错误,但我无法修复。

这是rds mysql连接代码:

import pandas as pd
import quandl

df = quandl.get("WIKI/GOOGL", api_key="censored")

print(df.head())

rds_config:

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_host='rds endpoint'
rds_port=3306
rds_user='user'
rds_pwd='password'
rds_db='db name'

我已经在vpc安全组中添加了IP地址,并且可以进行公共访问。 可以通过mysql cli或workbench连接。

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

我遇到了您的确切问题,我相信我有解决办法:

上下文: 我的技术堆栈如下所示

  • 使用AWS RDS(MySQL)
  • 在本地主机上使用Flask开发
  • RDS实例名称:“ test-rds”
  • 实际数据库名称:测试数据库

这是我的问题所在,我相信您的问题在同一个地方:

您在连接中使用的是 AWS RDS名称,而不是使用真实的数据库名称

只需将连接中的数据库名称更改为通过MySQL Workbench设置的真实数据库名称即可解决此问题。

其他注意事项:

请确保以下内容:

  • 如果要从AWS VPC外部进行连接,请确保已启用公共访问权限。这是一个巨大的“陷阱”。 (请注意安全风险)
  • 确保您的连接未被NACL阻止
  • 确保安全组规则允许您的连接