【问题标题】:django Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sockdjango 无法通过套接字连接到本地 MySQL 服务器'/var/run/mysqld/mysqld.sock
【发布时间】:2014-12-21 13:00:44
【问题描述】:

我已经做了一个虚拟环境并安装了以下内容:

sudo apt-get install libmysqlclient-dev
sudo pip install MySQL-python

我的设置是:

DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.mysql', 
    'NAME': 'DB_NAME',
    'USER': 'DB_USER',
    'PASSWORD': 'DB_PASSWORD',
    'HOST': 'localhost', 
    'PORT': '3306',

}

}

当我执行manage.py syncdb 时,它会给出错误提示2002, "Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)")

我不知道这里出了什么问题... 我搜索了它...主要是我发现如果我使用虚拟环境,那么上面的设置就足够了...这里有什么问题???

【问题讨论】:

  • 你确定mysql正在运行吗?另外,你确定 sock 位于 /var/run/mysqld/mysqld.sock。尝试在控制台中运行 service mysqld restart
  • 我正要问mysql是否正在运行,但是代码定义了一个端口,这意味着Django根本不应该查看套接字文件......
  • 它给出了错误 mysqld: unrecognized service when I do service mysqld restart
  • 当我查看 /var/run/ 时没有任何 mysqld
  • @Fizzadar 它会寻找一个套接字,因为localhost 告诉你,如果你想使用 tcp ip 那么你必须将其更改为 127.0.0.1

标签: python mysql django


【解决方案1】:

您的 HOST 应更改为“127.0.0.1”,您必须启动服务,尤其是在您使用 xamp 或 Lamp 时。

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

} #Your HOST should change to '127.0.0.1', you must start service, especially if you are using xamp or lamp

【讨论】:

    【解决方案2】:

    安装mysql服务器

    sudo apt-get install mysql-server
    

    然后为您的目的创建一个数据库:

    mysql -u root -p --execute "create database DB_NAME; grant all on DB_NAME.* to DB_USER@localhost identified by 'DB_PASSWORD';"
    

    那你应该没事。

    我要指出,mysql搜索socket的混淆,即使指定端口,是因为mysql在指定localhost作为地址时默认是socket,如果你想使用tcp/ip那么你应该把127.0.0.1 之类的地址放在那里。

    【讨论】:

      猜你喜欢
      • 2017-11-08
      • 2016-02-17
      • 1970-01-01
      • 2012-01-10
      • 2015-09-25
      • 1970-01-01
      • 2017-01-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多