2014-09-29 71 views
1

命令行的MySQL按预期方式工作:如何在MAMP中使用mysql-connector-python?

mysql --host=localhost --user=django3 --password=django3 \ 
     --database=django3 --port=8889 

生产:

... 
Server version: 5.5.34 Source distribution 
... 

但下面的脚本(改编自MySQL的连接器,蟒== 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() 

使用局域网上,但不尝试使用本地MAMP MySQL服务器时,MySQL服务器此脚本工作。因此,只要我有这个问题,发展环境不是那么便携!

回答

4

经过一点点hunting around我意识到我需要明确说明MAMP正在使用的unix套接字。

所以需要进行如下修改中的问题测试程序的连接表达式行:

... 
host='localhost', port='8889', \ 
unix_socket='/Applications/MAMP/tmp/mysql/mysql.sock', 
... 
0

发现connection.py和编辑:
'unix_socket': '/Applications/MAMP/tmp/mysql/mysql.sock',
...
self._unix_socket = '/Applications/MAMP/tmp/mysql/mysql.sock'

mine:/Library/Python/2.7/site-packages/mysql/connector/connection.py