最近在使用Django的時候遇到了一個問題,就是連接MySQL數據庫失敗。
我嘗試通過設置settings.py中的DATABASES參數來連接數據庫:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'mydatabase',
'USER': 'mydatabaseuser',
'PASSWORD': 'mypassword',
'HOST': 'localhost',
'PORT': '3306',
}
}
但是,當我試著運行Django時,卻發現無法連接到數據庫。
我決定檢查一下設置是否正確,于是我使用Django shell連接數據庫:
python manage.py shell
>>> from django.db import connection
>>> connection.connect()
結果,我得到了下面的錯誤信息:
django.db.utils.OperationalError: (2003, "Can't connect to MySQL server on 'localhost' ([Errno 111] Connection refused)")
我認為可能是MySQL服務器沒有啟動,于是我使用以下命令來檢查:
sudo systemctl status mysql.service
但是,MySQL服務器已經運行了。
之后,我決定嘗試連接遠程MySQL服務器,但是仍然無法連接。
最后,我通過查看MySQL日志發現,MySQL服務器默認監聽127.0.0.1而不是localhost,在settings.py中將HOST設置為'127.0.0.1'后,問題得以解決。
總結一下,要想連接MySQL數據庫成功,需要設置正確的DATABASES參數和注意HOST參數的設置。