OperationalError:(2002,“无法通过套接字连接到本地MySQL服务器'/var/run/mysqld/mysqld.sock'(2)”)

时间:2013-08-09 15:55:32

标签: python mysql django mysql.sock

当连接到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数据库。我仍然遇到同样的错误。

  5. 我搜索了很多,但我仍然不知道该怎么做。

    任何帮助都很重要。提前谢谢。

    好吧,我只是尝试了一些方法。它有效。 我这样做了。

    1. 添加socket = /tmp/mysql.sock。重新启动mysql服务器。
    2. ln -s /tmp/mysql.sock /var/lib/mysqld/mysqld.sock
    3. 我今天遇到了另一个问题。我无法登录mysql。 我是mysql的新手。所以我猜mysql服务器和客户端使用相同的套接字进行通信。 我将socket = /var/mysqld/mysqld.sock添加到my.cnf中的[mysqld] [client]块中,并且它已经成功了。

4 个答案:

答案 0 :(得分:16)

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

在烧瓶中,您可以使用它

app=Flask(__name__)

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

答案 3 :(得分:0)

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

试试 while True: try: self.driver.get("Enter Iframe src here") time.sleep(4) self.driver.find_element(By.CSS_SELECTOR, ".wrapper > .w-full").click() break except NoSuchElementException: self.driver.refresh() time.sleep(10)

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