mysql - 为什么我不能从 aws lambda 访问数据库,但可以从具有相同登录数据的本地计算机访问?
问题描述
我在 Amazon RDS 中创建了一个新的 Mysql 数据库,并在我的本地计算机上通过控制台访问
mysql -u username -p -h test.c2nfdg67dbdpb.us-east-1.rds.amazonaws.com
现在我尝试使用 python 和 pymysql 模块通过 Aws Lamda 连接
rds_host = "test.c2nfdg67dbdpb.us-east-1.rds.amazonaws.com"
name = 'username'
password = 'pass'
db_name = 'dbtest'
conn = pymysql.connect(rds_host, user=name, passwd=password, db=db_name, connect_timeout=5)
并得到一个错误ERROR] 2019-11-20T14:30:05.261Z 7b1ed2e0-03ba-4c62-9525-22d84582f (1049, "Unknown database 'dbtest'")
我完全不通过本地控制台使用数据库名称并获得访问权限,这似乎很奇怪。
ps我show databases;
在本地控制台上运行,dbtest
在数据库列表中看不到。我很困惑,因为当我创建新数据库时,我输入了一个名称,但只列出了默认数据库。那我和什么有联系?
pss hm 为什么数据库名称未定义?
解决方案
您的代码显式尝试连接名为dbtest
. 它要么连接到这个数据库,要么失败,这与你的 mysql 客户端相反,它可以在没有数据库选择的情况下连接。显然,数据库丢失了,因为您验证show databases
结果不包括dbtest
.
那么唯一可能的解释是从未创建数据库。
推荐阅读
- go - 如何在一个字段中创建具有 nil 值的地图,然后将其编组为 json?
- google-api - 尝试 Google API 存储桶:特定服务帐户的 testIamPermissions
- python - 使用 Python 从 SFTP 服务器下载超过 5 天的文件
- javascript - 当 x 轴隐藏在 Slider 中时,y 轴溢出
- javascript - 有没有办法打印 PDF 但手动设置值而不是从主 HTML 中获取它们?
- java - 执行准备语句时出现 java.sql.SQLSyntaxErrorException
- api - 消费者只在开始时两次消费相同的消息
- javascript - 如何使用 JSF Richfaces 文件上传在客户端获取文件大小
- javascript - 本地 Azure Devops 中的授权错误 401
- amazon-web-services - 无法加载文件或程序集“AWS.Logger.Core”