搭建好虚拟环境之后,我打算在虚拟环境内使用环境外(也就是本地的mysql)踩了一天的坑。- -/
1、
setting.py下的配置
#mysql的配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'django_mysql', #自己想连接的库名
'USER': 'root', # 账号
'PASSWORD': 'root', # 密码
'HOST': 'localhost', # HOST
'POST': 3306, # 端口
'CHARSET':'UTF8',
}
}
__init__.py下的配置
import pymysql
pymysql.install_as_MySQLdb()
这两个位置的配置是不变的
2、一开始在虚拟环境下找不到本地的mysql,我们需要执行这两个命令
alias mysql=/usr/local/mysql/bin/mysql
alias mysqladmin=/usr/local/mysql/bin/mysqladmin
这样在虚拟环境下,就可以访问到mysql了
3、
数据迁移,执行python3 manage.py makemigrations时报错
django.db.utils.OperationalError: (2003, "Can't connect to MySQL server on 'localhost' ([Errno 61] Connection refused)")
重启了一下mysql服务就好了
在MAC 下启动和关闭MYSQL服务的命令
启动MySQL服务
sudo /usr/local/MySQL/support-files/mysql.server start
停止MySQL服务
sudo /usr/local/mysql/support-files/mysql.server stop
重启MySQL服务
sudo /usr/local/mysql/support-files/mysql.server restart
4、重启完mysql之后继续执行python3 manage.py makemigrations又报新的错误:AttributeError: 'str' object has no attribute 'decode']
File "/usr/local/lib/python3.7/site-packages/django/db/backends/mysql/operations.py", line 146, in last_executed_query
query = query.decode(errors='replace')
AttributeError: 'str' object has no attribute 'decode'
解决方法:
"/usr/local/lib/python3.7/site-packages/django/db/backends/mysql/operations.py", line 146
找到报错的这个文件,将146行的decode修改成encode
# query = query.decode(errors='replace')
query = query.encode(errors='replace')
(其中踩过的坑就先不写了,以免误导大家,我的情况也不一定具有普适性,希望能帮助到别人,如果不成你们再查一下其他的方法吧。我用的是mac,windows下也许会有不同。)
网友评论