我是django和模块以及web应用程序的初学者。
以下是跟踪和数据:
OperationalError at /admin/learning_logs/example/
no such column: learning_logs_example.entry_id
Request Method: GET
Request URL: http://localhost:8000/admin/learning_logs/example/
Django Version: 1.11.7
Exception Type: OperationalError
Exception Value:
no such column: learning_logs_example.entry_id
Exception Location: C:\Users\Bryan\Desktop\LEARNI~1\ll_env\lib\site-
packages\django\db\backends\sqlite3\base.py in execute, line 328
Python Executable: C:\Users\Bryan\Desktop\LEARNI~1\ll_env\Scripts\python.exe
Python Version: 3.6.2
Python Path:
['C:\\Users\\Bryan\\Desktop\\learning log',
'C:\\Users\\Bryan\\Desktop\\LEARNI~1\\ll_env\\Scripts\\python36.zip',
'C:\\Users\\Bryan\\AppData\\Local\\Programs\\Python\\Python36-32\\DLLs',
'C:\\Users\\Bryan\\AppData\\Local\\Programs\\Python\\Python36-32\\lib',
'C:\\Users\\Bryan\\AppData\\Local\\Programs\\Python\\Python36-32',
'C:\\Users\\Bryan\\Desktop\\LEARNI~1\\ll_env',
'C:\\Users\\Bryan\\Desktop\\LEARNI~1\\ll_env\\lib\\site-packages']
Server time: Sat, 18 Nov 2017 18:36:14 +0000出于某种原因,当我点击下面的“示例”链接时,

上面写着

我试过迁移,但上面写着
(venv) C:\...\learning log>python manage.py makemigrations
No changes detected
(venv) C:\...\learning log>python manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
No migrations to apply.我是怎么做到的?
首先,我用一个example添加了一个TextField条目/表单,然后添加了一个“示例”。我添加了一个ForeignKey对象,参数作为Entry。
我回去编辑我的“示例”,但后来出现了异常。
编辑: Well janos希望在运行python manage.py showmigrations learning_logs时获得输出,如下所示:
admin
[X] 0001_initial
[X] 0002_logentry_remove_auto_add
auth
[X] 001_initial
[X] 0001_initial
[X] 0002_alter_permission_name_max_length
[X] 0003_alter_user_email_max_length
[X] 0004_alter_user_username_opts
[X] 0005_alter_user_last_login_null
[X] 0006_require_contenttypes_0002
[X] 0007_alter_validators_add_error_messages
[X] 0008_alter_user_username_max_length
contenttypes
[X] 0001_initial
[X] 0002_remove_content_type_name
learning_logs
[X] 0001_initial
sessions
[X] 0001_initial我希望这能帮上忙。
我重新创建了异常页(右这里 )
发布于 2017-12-10 13:30:17
正如错误消息所述,表entry_id中的列learning_logs_example不存在。这不正常。如果正确创建并正确应用了模式迁移,则不应发生这种情况。
此外,考虑到这一点:
C:\学习log>python manage.py迁移操作来执行:应用所有迁移: admin、auth、contenttype、运行迁移的会话:没有要应用的迁移。
Apply all migrations行应该包含应用程序的名称。现有名称是标准Django组件。您的应用程序名称可能是learning_log或类似的。简而言之,似乎您的应用程序不存在迁移。
要调试这一点,首先检查应用程序的showmigrations输出:
./manage.py showmigrations learning_log如果您没有得到错误,那么请将输出添加到您的问题中。
如果您得到一个错误CommandError: No migrations present for: ...,那么创建迁移:
./manage.py makemigrations learning_log然后再次检查showmigrations的输出,并将输出添加到您的问题中。
如果输出如下所示:
learning_log
[X] 0001_initial
...这意味着数据库有一些关于应用迁移的记录,实际上Django认为迁移是正确的。(事实上,根据您的主要错误,它们不是。)
根据我到目前为止所获得的信息,您的数据库似乎与模型不同步:一些字段在没有应用到数据库的情况下被添加到模型中,并且迁移没有被正确保存。
一个简单的解决方案可以是手动添加缺少的列。通过查看迁移文件可以找到正确的架构:
./manage.py sqlmigrate learning_log 0001由此,您应该能够找到缺少的entry_id字段是如何声明的,然后使用查询ALTER TABLE learning_logs_example ADD COLUMN entry_id ...手动将其添加到表中,其中其余的参数取决于sqlmigrate输出中列的定义。
如果问题仅仅是一个或几个缺失的字段,那么这个解决方案可能就足以让一些东西正常工作。(如果不是,请跳到下一节。)不过,您不应该就此止步,因为模型也可能需要一些索引。您可以进一步研究sqlmigrate的输出,并重新创建所有依赖于learning_logs_example的其他对象,如索引、触发器。但是,一个更干净的解决方案是重新创建应用程序的所有表,如下所示:
./manage.py dumpdata learning_log > learning_log.json./manage.py migrate --fake learning_log zero; ./manage.py migrate learning_log./manage.py loaddata learning_log如果手动添加列的解决方法不起作用(您遇到了更复杂的问题),那么您有两个选择:
最后,为了避免进一步的问题,您需要确保所有迁移都与模型同步,并正确地添加到版本控制中。一种很好的测试方法是将Django项目安装在计算机上的另一个文件夹中。如果这不顺利,那么设置仍然不太好。
如果需要更多的澄清,请告诉我。
发布于 2017-11-18 20:48:35
这是您第一次为应用程序创建迁移吗?如果是这样的话,您需要指定应用程序名来进行迁移:
python manage.py makemigrations my-app发布于 2017-12-13 12:12:42
如果数据无关紧要,您可以从这里删除数据库文件:
C:\Users\bryan_8nva8ki\Desktop\learning logs\db.sqlite3
(我从你的日志中看到了那条路)
那你应该再做一次migrate。希望能帮上忙!
https://stackoverflow.com/questions/47369811
复制相似问题