获取我试图删除的模型的django模型错误

获取我试图删除的模型的django模型错误,django,Django,你能帮忙吗 我在Django models.py上犯了一个错误,然后想删除该模型 从下面可以看到,迁移是为了删除名为code的模型 但是,它仍然会出错&不会删除模型 我能做什么 root@new:/home/django/django_project# python manage.py makemigrations Migrations for 'netshock': netshock/migrations/0018_delete_code.py - Delete model cod

你能帮忙吗

我在Django models.py上犯了一个错误,然后想删除该模型

从下面可以看到,迁移是为了删除名为code的模型

但是,它仍然会出错&不会删除模型

我能做什么

root@new:/home/django/django_project# python manage.py makemigrations
Migrations for 'netshock':
  netshock/migrations/0018_delete_code.py
    - Delete model code
root@new:/home/django/django_project# python manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, netshock, sessions
Running migrations:
  Applying netshock.0012_code...Traceback (most recent call last):
  File "manage.py", line 22, in <module>
    execute_from_command_line(sys.argv)
  File "/usr/lib/python2.7/dist-packages/django/core/management/__init__.py", line 364, in execute_from_command_line
    utility.execute()
  File "/usr/lib/python2.7/dist-packages/django/core/management/__init__.py", line 356, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/usr/lib/python2.7/dist-packages/django/core/management/base.py", line 283, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/usr/lib/python2.7/dist-packages/django/core/management/base.py", line 330, in execute
    output = self.handle(*args, **options)
  File "/usr/lib/python2.7/dist-packages/django/core/management/commands/migrate.py", line 204, in handle
    fake_initial=fake_initial,
  File "/usr/lib/python2.7/dist-packages/django/db/migrations/executor.py", line 115, in migrate
    state = self._migrate_all_forwards(state, plan, full_plan, fake=fake, fake_initial=fake_initial)
  File "/usr/lib/python2.7/dist-packages/django/db/migrations/executor.py", line 145, in _migrate_all_forwards
    state = self.apply_migration(state, migration, fake=fake, fake_initial=fake_initial)
  File "/usr/lib/python2.7/dist-packages/django/db/migrations/executor.py", line 244, in apply_migration
    state = migration.apply(state, schema_editor)
  File "/usr/lib/python2.7/dist-packages/django/db/migrations/migration.py", line 129, in apply
    operation.database_forwards(self.app_label, schema_editor, old_state, project_state)
  File "/usr/lib/python2.7/dist-packages/django/db/migrations/operations/models.py", line 97, in database_forwards
    schema_editor.create_model(model)
  File "/usr/lib/python2.7/dist-packages/django/db/backends/base/schema.py", line 303, in create_model
    self.execute(sql, params or None)
  File "/usr/lib/python2.7/dist-packages/django/db/backends/base/schema.py", line 120, in execute
    cursor.execute(sql, params)
  File "/usr/lib/python2.7/dist-packages/django/db/backends/utils.py", line 79, in execute
    return super(CursorDebugWrapper, self).execute(sql, params)
  File "/usr/lib/python2.7/dist-packages/django/db/backends/utils.py", line 64, in execute
    return self.cursor.execute(sql, params)
  File "/usr/lib/python2.7/dist-packages/django/db/utils.py", line 94, in __exit__
    six.reraise(dj_exc_type, dj_exc_value, traceback)
  File "/usr/lib/python2.7/dist-packages/django/db/backends/utils.py", line 62, in execute
    return self.cursor.execute(sql)
django.db.utils.ProgrammingError: syntax error at or near "4000000000"
LINE 1: ...("id" serial NOT NULL PRIMARY KEY, "code" varchar(4000000000...
root@new:/home/django/django_项目#python manage.py makemigrations
“netshock”的迁移:
netshock/migrations/0018_delete_code.py
-删除型号代码
root@new:/home/django/django_项目#python manage.py迁移
要执行的操作:
应用所有迁移:管理、身份验证、contenttypes、netshock、会话
运行迁移:
正在应用netshock.0012_代码…回溯(最近一次调用):
文件“manage.py”,第22行,在
从命令行(sys.argv)执行命令
文件“/usr/lib/python2.7/dist packages/django/core/management/_init__uuu.py”,第364行,从命令行执行
utility.execute()
文件“/usr/lib/python2.7/dist-packages/django/core/management/_-init__.py”,第356行,在execute中
self.fetch_命令(子命令)。从_argv(self.argv)运行_
文件“/usr/lib/python2.7/dist-packages/django/core/management/base.py”,第283行,运行于\u argv
self.execute(*args,**cmd_选项)
文件“/usr/lib/python2.7/dist packages/django/core/management/base.py”,第330行,在execute中
输出=self.handle(*args,**选项)
handle中的文件“/usr/lib/python2.7/dist packages/django/core/management/commands/migrate.py”,第204行
假首字母=假首字母,
文件“/usr/lib/python2.7/dist packages/django/db/migrations/executor.py”,migrate中的第115行
状态=self.\u迁移\u所有\u转发(状态,计划,完整计划,假=假,假首字母=假首字母)
文件“/usr/lib/python2.7/dist packages/django/db/migrations/executor.py”,第145行,全部向前迁移
state=self.apply\u迁移(state,migration,false=false,false\u initial=false\u initial)
文件“/usr/lib/python2.7/dist packages/django/db/migrations/executor.py”,第244行,在apply_migration中
state=migration.apply(状态,模式编辑器)
文件“/usr/lib/python2.7/dist packages/django/db/migrations/migration.py”,第129行,在apply中
操作。数据库转发(self.app\u标签、模式编辑器、旧状态、项目状态)
数据库中的文件“/usr/lib/python2.7/dist packages/django/db/migrations/operations/models.py”,第97行
架构编辑器。创建模型(模型)
文件“/usr/lib/python2.7/dist packages/django/db/backends/base/schema.py”,第303行,在create_模型中
self.execute(sql、参数或无)
文件“/usr/lib/python2.7/dist packages/django/db/backends/base/schema.py”,第120行,在execute中
cursor.execute(sql,params)
文件“/usr/lib/python2.7/dist packages/django/db/backends/utils.py”,执行中的第79行
返回super(CursorDebugWrapper,self).execute(sql,params)
文件“/usr/lib/python2.7/dist packages/django/db/backends/utils.py”,执行中的第64行
返回self.cursor.execute(sql,params)
文件“/usr/lib/python2.7/dist packages/django/db/utils.py”,第94行,在退出时__
6.重新播放(dj_exc_类型、dj_exc_值、回溯)
文件“/usr/lib/python2.7/dist packages/django/db/backends/utils.py”,执行中的第62行
返回self.cursor.execute(sql)
django.db.utils.ProgrammingError:位于或接近“4000000000”的语法错误
第1行:…(“id”串行非空主键,“代码”varchar(4000000000。。。

错误底部指定了问题:

现在
4000000000
太大了。PostgreSQL提到:

(…)在任何情况下,可能的最长字符串 存储的容量大约为1 GB(允许的最大值) 数据类型声明中的n小于该值。它不会 改变这一点很有用,因为使用多字节字符编码 字符数和字节数可能会大不相同 想要存储没有特定上限的长字符串,请使用文本或 不使用长度说明符而不是组成字符的字符 任意长度限制。)

因此,将其设置为4'000'000'000毫无意义


如果您以后进行额外更改,这将无法解决问题(至少不会立即解决),因为您创建了迁移文件,其中包含
4000000000
。您必须删除无法应用的迁移文件(与这些迁移之后的迁移一起,否则链中可能会有错误),并创建新的迁移文件。

错误清楚地表明
4000000000
near
varchar(4000000000)
是错误的。您定义的其中一个字段太大了。是的-我试图更改字段大小,但无法更改。因此,我已从models.py中删除了模型。我只想让它删除模型,但它仍然抱怨(非常)可能是因为特定的迁移文件仍然存在。因此您无法“通过”迁移。你应该检查哪些迁移可以丢弃并创建新的迁移。你刚刚成为我在全世界最喜欢的人:)-你能添加删除文件作为答案吗,我会将其标记为正确:)
django.db.utils.ProgrammingError: syntax error at or near "4000000000"
LINE 1: ...("id" serial NOT NULL PRIMARY KEY, "code" varchar(4000000000...