PyCharm中通过SSH隧道连接PythonAnywhere MySQL报2003错误求助
解决PythonAnywhere MySQL连接错误(SSH隧道场景)
核心问题分析
你遇到的%u format: a real number is required, not str错误,本质是连接参数的配置或类型不符合要求,结合SSH隧道场景,主要有两个常见诱因:
1. 未使用SSH隧道的本地转发地址
用SSH隧道连接PythonAnywhere MySQL时,不能直接填写远程MySQL的host地址,必须连接隧道在本地映射的回环地址:
- host需设为
127.0.0.1 - port需填写你在PyCharm SSH隧道中配置的本地转发端口(比如33060,而非远程MySQL的3306)
2. 端口参数类型错误
确保port参数是整数类型,不要用字符串包裹(比如port=33060而非port="33060"),旧版mysql-connector对参数类型校验严格,字符串端口会触发格式化错误。
修正后的连接代码示例
import mysql.connector cnx = mysql.connector.connect( host="127.0.0.1", # 改用本地隧道映射地址 user="你的PythonAnywhere用户名", port=33060, # 替换为你在PyCharm中设置的本地转发端口 password="你的MySQL密码", database="你的数据库名(格式:用户名$数据库名)" )
额外排查步骤
- 确认PyCharm的SSH隧道已启动:在
Tools > SSH Sessions中查看隧道状态,确保本地端口已成功转发到远程MySQL的xxx.mysql.eu.pythonanywhere-services.com:3306 - 升级mysql-connector-python:执行
pip install --upgrade mysql-connector-python,旧版本存在格式化字符串的bug,升级后可解决部分参数兼容问题 - 验证数据库名格式:PythonAnywhere的数据库名必须是
用户名$数据库名格式(比如john$my_db),不要遗漏$符号
内容的提问来源于stack exchange,提问作者S--
相关产品推荐
相关产品推荐

