【问题标题】:OperationalError: (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)")
【发布时间】:2013-08-11 15:09:44
【问题描述】:

在 Django 中连接 mysql 数据库时,出现错误。

  1. 我确定mysql服务器正在运行。

  2. /var/run/mysqld/mysqld.sock 不存在。

  3. 当我运行 $ find / -name *.sock -type s 时,我只得到 /tmp/mysql.sock 和一些其他不相关的输出。

  4. 我将socket = /tmp/mysql.sock 添加到/etc/my.cnf。然后重启mysql,退出django shell,连接mysql数据库。我仍然遇到同样的错误。

查了很多,还是不知道怎么办。

任何帮助都是伟大的。提前致谢。

嗯,我只是尝试了一些方法。它有效。 我做了如下。

  1. 添加socket = /tmp/mysql.sock。重启mysql服务器。
  2. ln -s /tmp/mysql.sock /var/lib/mysqld/mysqld.sock

我今天遇到了另一个问题。我无法登录到mysql。 我是mysql的新手。所以我猜mysql服务器和客户端使用相同的套接字进行通信。 我将socket = /var/mysqld/mysqld.sock 添加到 my.cnf 中的 [mysqld] [client] 块中,它可以工作。

【问题讨论】:

  • 你能用MySQL CLI本地连接到你的MySQL服务器吗? (类似的东西:mysql -u you_user_name -p
  • 您的DATABASES 设置是什么?
  • 我可以使用 mysql -u user_name -p 连接到 mysql 服务器。我将数据库设置为 django 推荐
  • 可以直接设置socket = /var/run/mysqld/mysqld.sock吗?这样您就不必手动将 /tmp/mysql.sock 链接到该路径。

标签: python mysql django mysql.sock


【解决方案1】:

使用“127.0.0.1”,而不是“localhost”

DATABASES = {
   'default': {
      'ENGINE': 'django.db.backends.mysql',
      'NAME': 'django',
      'USER': 'root',
      'PASSWORD': '',
      'HOST': '127.0.0.1',
      'PORT': '3306',
   }
}

【讨论】:

  • 知道为什么会有任何不同吗?大多数情况下 localhost 不是和 127.0.0.1 一样吗?
  • 这是我们在软件开发中的苦乐参半的时刻之一:我很高兴它成功了,但同时我不知道为什么它会成功。不过还是谢谢。
【解决方案2】:

对我来说这很有效 使用 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',
        }
    }
}

【讨论】:

    【解决方案3】:

    在烧瓶中,你可以使用它

    app=Flask(__name__)

    app.config["MYSQL_HOST"]="127.0.0.1
    app.config["MYSQL_USER"]="root"...

    【讨论】:

      【解决方案4】:

      我在使用 Docker 连接 MySQL 和 Django 时遇到了这个问题。

      试试'PORT':'0.0.0.0'

      不要使用'PORT': 'db'。如果您尝试在 Docker 之外运行您的应用程序,这将不起作用。

      【讨论】:

        猜你喜欢
        • 2014-04-12
        • 2012-08-13
        • 2017-02-12
        • 2021-10-14
        • 2012-09-19
        • 2019-09-28
        相关资源
        最近更新 更多