Django:切换到MySQL

时间:2018-05-05 09:40:14

标签: mysql django django-celery

我正在研究我的第一个Django项目,并且我一直在达到sqlite的极限。所以我决定在添加大量额外测试数据之前切换到MySQL。自从我的Django应用程序中的页面不再加载(管理员和项目页面都没有)。在Chrome最终显示" ERR_CONNECTION_REFUSED"之前,我没有收到任何错误消息。

我在设置中添加了以下内容:

    'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME': 'db_name',
    'USER': 'user',
    'PASSWORD': 'password',
    'HOST': '127.0.0.1',
    'PORT': '3306',
    'OPTIONS': {
       'read_default_file': os.path.join(BASE_DIR, 'my.cnf'),
    },

上面引用的my.cnf文件如下所示:

[client]
database = dbname
user = username
password = password
default-character-set = utf8

[mysqld]
max_allowed_packet = 512M

wait_timeout = 604800
interactive_timeout = 28800

它被定义使用,因为更改文件中的数据库名称会导致Django连接到不同的数据库。

该项目使用Celery,因此我还修改了Celery结果后端:

CELERY_RESULT_BACKEND = 'db+mysql://user:password@localhost:3306/dbname'

Django可以连接到数据库(参见这样的测试:how can I check database connection to mysql in django)。我根据此问题的第二个答案迁移了我的内容:What's the best way to migrate a Django DB from SQLite to MySQL?没有任何错误。所有数据都存在于phpMyAdmin中。 MySQL错误日志中没有任何内容。 Django和Celery都没有在调试控制台/命令行中输出任何错误。我安装了mysqlclient和(对于Celery)SQLAlchemy。

切换回原来的sqlite配置可以解决问题,因此它肯定与MySQL数据库相关联。我在俯瞰什么?我错过了一些重要的配置步骤吗?有没有办法获得更多错误消息?尤其是完全缺乏后者真的让我感到茫然。

尝试从数据库中获取对象bia Python控制台导致´mysql_exceptions.OperationalError: (2006, 'MySQL server has gone away'),这再一次指向MySQL问题。关闭旧连接修复了此错误,该错误到目前为止尚未重新出现,但页面仍然无法加载。

0 个答案:

没有答案