【问题标题】:django mysql gives page not found (404) while sqlite works finedjango mysql 给出页面未找到(404),而 sqlite 工作正常
【发布时间】:2015-12-09 17:31:15
【问题描述】:

我的 django 项目有两个设置文件,具有不同的数据库设置。

第一:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'dbname',
        'USER': 'user',
        'PASSWORD': 'megahardbreakingpassword',
        'HOST': 'localhost',
        'PORT': '',
        'OPTIONS': {
            'init_command': 'SET storage_engine=INNODB',
        }
    }
}

第二个:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3', 
        'NAME': 'db.sqlite3',
        'USER': '',
        'PASSWORD': '',
        'HOST': '',
        'PORT': '',
    }
}

当我用第二个数据库设置项目运行服务器时工作正常,但是当我用 mysql 运行第一个设置文件时,django 为所有 url 返回 404 错误。

我还使用 django-hosts 来实现子域模式,所以这里可能有问题。我的 hosts.py 代码:

from django_hosts import patterns, host


host_patterns = patterns('',
    host(r'^$', 'project.urls', name='host'),
)

我使用 django 1.4.2 和 Python 2.7.9

【问题讨论】:

  • 数据库设置不可能是原因...你确定两个设置文件之间没有更多区别了吗?
  • 当然。我复制了一个文件,然后更改了 DATABASES 选项
  • 数据库不会产生 404 错误。您有一个查询数据库并在遇到错误时引发 404 的视图。请查看日志文件

标签: python mysql django sqlite


【解决方案1】:

我终于找到了答案!根据e4c5's comment,我在我的视图中搜索了问题而不是我的设置文件。我编写了简单的 unittest,它给了我一些关于我的 MySQL 数据库的奇怪跟踪信息,例如错误的列名和关于重复索引的弃用警告。

我重新安装了旧版本的 MySQL 服务器(5.0.70 而不是 5.6.25),再次运行 syncdb 和迁移,它完全解决了我的问题。所以上帝保佑TDD!

【讨论】:

    猜你喜欢
    • 2017-03-05
    • 2019-11-20
    • 2011-07-17
    • 1970-01-01
    • 2013-06-17
    • 1970-01-01
    • 2021-06-30
    • 1970-01-01
    • 2018-03-28
    相关资源
    最近更新 更多