[英](2002, "Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)")
[英]OperationalError: (2002, "Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)")
在 Django 中连接到 mysql 数据库时,出现错误。
我确定mysql服务器正在运行。
/var/run/mysqld/mysqld.sock 不存在。
当我运行$ find / -name *.sock -type s
时,我只得到 /tmp/mysql.sock 和其他一些不相关的输出。
我将socket = /tmp/mysql.sock
添加到 /etc/my.cnf。 然后重启mysql,退出django shell,连接mysql数据库。 我仍然遇到同样的错误。
我搜索了很多,但我仍然不知道该怎么做。
任何帮助都是巨大的。 提前致谢。
好吧,我只是尝试了一些方法。 它有效。 我做了如下。
socket = /tmp/mysql.sock
。重启mysql服务器。ln -s /tmp/mysql.sock /var/lib/mysqld/mysqld.sock
我今天遇到了另一个问题。 我无法登录到mysql。 我是mysql的新手。 所以我猜mysql服务器和客户端使用相同的套接字进行通信。 我将socket = /var/mysqld/mysqld.sock
添加到 my.cnf 中的 [mysqld] [client] 块,然后它就可以工作了。
使用“127.0.0.1”,而不是“localhost”
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'django',
'USER': 'root',
'PASSWORD': '',
'HOST': '127.0.0.1',
'PORT': '3306',
}
}
对我来说,这很有效,可以使用 read_default_file 添加 OPTIONS 属性并为其提供 my.cnf 文件的路径
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'dbname',
'USER': 'root',
'PASSWORD': '',
'HOST': 'localhost',
'PORT': '3306',
'OPTIONS': {
'read_default_file': '/opt/lampp/etc/my.cnf',
}
}
}
在烧瓶中,您可以使用它
app=Flask(__name__)
app.config["MYSQL_HOST"]="127.0.0.1
app.config["MYSQL_USER"]="root"
...
我在使用Docker时将 MySQL 与 Django 连接时遇到了这个问题。
试试'PORT':'0.0.0.0'
。
不要使用'PORT': 'db'
。 如果您尝试在 Docker 之外运行您的应用程序,这将不起作用。
您需要将您的主机从'localhost'
更改为'127.0.0.1'
并检查您的 django 应用程序:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.