django当中需要使用mysql作为数据库,创建好Model之后执行以下命令创建表
python manage.py migrate
但是执行的时候遇到错误:
django.db.utils.OperationalError: (2002, "Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)")
我们在连接mysql的时候,如果host是localhost, 就会使用Unix Domain Socket来连接, MySql默认的sock文件路径是/tmp/mysql.sock
, 可以通过打开/etc/my.cnf
确认。
打开settings.py文件,找到DATABASES
的HOST
字段。
有两种修改方案:
localhost
改成127.0.0.1
, 使用内网连接localhost
改成/var/lib/mysql/mysql.sock
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'xxx',
'USER': 'root',
'PASSWORD': 'passwd',
'HOST':'127.0.0.1', # 或者 `/tmp/mysql.sock`
'PORT':'3306',
}
}
vi etc/my.cnf
将sock路径变更为/var/lib/mysql/mysql.sock
socket = /tmp/mysql.sock
重启MySql服务。 Centos机器上
systemctl restart mysqld
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'xxx',
'USER': 'root',
'PASSWORD': 'passwd',
'OPTIONS': {
"unix_socket": "/tmp/mysql.sock",
},
}
}
亲测有效
文章出自https://www.jianshu.com/p/2f261dbc4016