Python django Can';t通过套接字连接到本地MySQL服务器'/var/run/mysqld/mysqld.sock
我创建了一个虚拟环境,并安装了以下内容:Python django Can';t通过套接字连接到本地MySQL服务器'/var/run/mysqld/mysqld.sock,python,mysql,django,Python,Mysql,Django,我创建了一个虚拟环境,并安装了以下内容: 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',
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,“无法通过套接字连接到本地MySQL服务器'/var/run/mysqld/mysqld.sock'(2)”)
我不知道这里怎么了。。。
我找过了。。。大多数情况下,我发现如果我使用virtualenvironment,那么上面的设置就足够了。。。这里出了什么问题?安装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搜索套接字的混乱,即使指定了端口,也是因为mysql在指定
localhost
作为地址时默认为套接字,如果你想使用tcp/ip,那么你应该在那里放一个类似127.0.0.1
的地址。你的主机应该改为“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
你确定mysql正在运行吗?另外,您确定sock位于/var/run/mysqld/mysqld.sock吗。尝试在控制台中运行
服务mysqld restart
。我正要询问mysql是否正在运行,但代码定义了一个端口,这意味着Django根本不应该查看套接字文件……当我为mysqld restart提供服务时,以及当我查看/var/run/where's nothing时,它会给出错误mysqld:unrecogned servicemysqld@Fizzadar它查找套接字,因为localhost
告诉它,如果要使用tcp ip,则必须将其更改为127.0.0.1