簡體   English   中英

如何將 mysql-connector-python 與 MAMP 一起使用?

[英]How do I use mysql-connector-python with MAMP?

命令行 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 服務器時不起作用。 因此,只要我有這個問題,開發環境就不會那么便攜!

經過一番摸索,我意識到我需要明確說明 MAMP 正在使用的 unix 套接字。

所以題中的測試程序中的連接表達式中的那一行需要修改如下:

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

找到 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM