django在虚拟环境下配置连接mysql

搭建好虚拟环境之后,我打算在虚拟环境内使用环境外(也就是本地的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下也许会有不同。)

你可能感兴趣的:(django在虚拟环境下配置连接mysql)