最近在使用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参数的设置。