gpt4 book ai didi

python - OperationalError 在/admin/learning_logs/example/

转载 作者:太空宇宙 更新时间:2023-11-04 09:52:05 24 4
gpt4 key购买 nike

我是 django 以及模块和网络应用程序的初学者。

这是回溯和数据:

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

出于某种原因,当我单击下面显示“示例”的链接时,

enter image description here

它是这样说的

enter image description here

我尝试迁移,但它说

(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.

我是如何做到这一点的?

首先,我添加了带有 TextFieldexample 条目/表单,然后我添加了一个“示例”。我添加了一个 ForeignKey 对象,参数为 Entry

我回去编辑我的“示例”,但异常出现了。

编辑:当我运行 python manage.py showmigrations learning_logs 时,janos 想要输出,所以这里是:

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

希望对您有所帮助。

我重新创建了异常页面 here

最佳答案

正如错误信息所说,表 learning_logs_example 中的列 entry_id 不存在。这是不正常的。如果架构迁移已正确创建并正确应用,那么这不应该发生。

此外,看看这个:

(venv) C:\...\learning log>python manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
No migrations to apply.

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 迁移学习日志
  • 恢复数据:./manage.py loaddata learning_log

如果手动添加列的解决方法不起作用(你遇到了更复杂的问题),那么你有两个选择:

  • 如果您不能承受丢失数据的后果,那么您将不得不手动追踪并解决每一个问题。完成后,您应该按照我在上一节中解释的那样转储和恢复应用程序的表

  • 如果丢失数据没有关系,那么您可以按照上一节中的过程进行操作,而无需进行转储和恢复步骤。也就是说,删除并重新创建应用程序的表


最后,为了避免进一步的问题,您需要确保所有迁移都与模型同步,并正确添加到版本控制中。一个很好的测试方法是将 Django 项目安装在计算机上的不同文件夹中。如果不顺利的话那么设置还是不好。


如果以上任何内容需要更多说明,请告诉我。

关于python - OperationalError 在/admin/learning_logs/example/,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47369811/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com