美文网首页
django在虚拟环境下配置连接mysql

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

作者: 以我丶之姓 | 来源:发表于2021-01-22 15:35 被阅读0次

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

          本文链接:https://www.haomeiwen.com/subject/vgnszktx.html