命令行mysql按预期工作:
mysql --host=localhost --user=django3 --password=django3 \
--database=django3 --port=8889
生产:
...
Server version: 5.5.34 Source distribution
...
但是下面的脚本(改编自mysql-connector-python == 1.2.3网站)产生:
2003: Can't connect to MySQL server on 'localhost:8889' \
(61 Connection refused)
为什么会这样?
import mysql.connector
from mysql.connector import errorcode
try:
cnx = mysql.connector.connect(user='django3', password='django3',
host='localhost', port='8889',
database='django3')
except mysql.connector.Error as err:
if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
print("Something is wrong with your user name or password")
elif err.errno == errorcode.ER_BAD_DB_ERROR:
print("Database does not exists")
else:
print(err)
else:
cnx.close()
此脚本将使用LAN上的MySQL服务器,但在尝试使用本地MAMP MySQL服务器时则不行。因此,只要我有这个问题,开发环境就不那么便携了!
答案 0 :(得分:5)
经过一点hunting around我意识到我需要明确MAMP正在使用的unix套接字。
因此问题中测试程序中连接表达式中的行需要修改如下:
...
host='localhost', port='8889', \
unix_socket='/Applications/MAMP/tmp/mysql/mysql.sock',
...
答案 1 :(得分:0)
找到connection.py并编辑:
'unix_socket': '/Applications/MAMP/tmp/mysql/mysql.sock',
...
self._unix_socket = '/Applications/MAMP/tmp/mysql/mysql.sock'
我的:/ Library /Python/2.7/site-packages/mysql/connector/connection.py