AttributeError:'str'对象在Django迁移迁移中没有属性'state_forwards'

如何解决AttributeError:'str'对象在Django迁移迁移中没有属性'state_forwards'

我正在尝试将不同模型的postgres表的自动生成的ID设置为10000的起始值。我使用this article并执行以下操作:

python3 manage.py makemigrations core --empty

然后在迁移中添加

    operations = [
        migrations.Runsql(
                        "ALTER SEQUENCE CORE_ORG_id_seq RESTART WITH 10000","ALTER SEQUENCE CORE_USER_id_seq RESTART WITH 10000","ALTER SEQUENCE CORE_PARTLISTING_id_seq RESTART WITH 1000","ALTER SEQUENCE CORE_BOMITEM_id_seq RESTART WITH 1000","ALTER SEQUENCE CORE_MANUFACTURER_id_seq RESTART WITH 1000;"
        ),migrations.Runsql(
                        "ALTER SEQUENCE CORE_BOM_id_seq RESTART WITH 1000","ALTER SEQUENCE CORE_SPECIFICPART_id_seq RESTART WITH 10000","ALTER SEQUENCE CORE_GENERICPART_id_seq RESTART WITH 10000;"
                        ),]

我将它们放在两行中,因为我得到一个错误__init.py__只能接受6条命令。

在此上运行迁移时,我得到:

  File "manage.py",line 21,in <module>
    main()
  File "manage.py",line 17,in main
    execute_from_command_line(sys.argv)
  File "/Users/myname/.local/share/virtualenvs/mobiusAPI-NVQT3lgx/lib/python3.8/site-packages/django/core/management/__init__.py",line 401,in execute_from_command_line
    utility.execute()
  File "/Users/myname/.local/share/virtualenvs/mobiusAPI-NVQT3lgx/lib/python3.8/site-packages/django/core/management/__init__.py",line 395,in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/Users/myname/.local/share/virtualenvs/mobiusAPI-NVQT3lgx/lib/python3.8/site-packages/django/core/management/base.py",line 330,in run_from_argv
    self.execute(*args,**cmd_options)
  File "/Users/myname/.local/share/virtualenvs/mobiusAPI-NVQT3lgx/lib/python3.8/site-packages/django/core/management/base.py",line 371,in execute
    output = self.handle(*args,**options)
  File "/Users/myname/.local/share/virtualenvs/mobiusAPI-NVQT3lgx/lib/python3.8/site-packages/django/core/management/base.py",line 85,in wrapped
    res = handle_func(*args,**kwargs)
  File "/Users/myname/.local/share/virtualenvs/mobiusAPI-NVQT3lgx/lib/python3.8/site-packages/django/core/management/commands/migrate.py",line 243,in handle
    post_migrate_state = executor.migrate(
  File "/Users/myname/.local/share/virtualenvs/mobiusAPI-NVQT3lgx/lib/python3.8/site-packages/django/db/migrations/executor.py",line 117,in migrate
    state = self._migrate_all_forwards(state,plan,full_plan,fake=fake,fake_initial=fake_initial)
  File "/Users/myname/.local/share/virtualenvs/mobiusAPI-NVQT3lgx/lib/python3.8/site-packages/django/db/migrations/executor.py",line 147,in _migrate_all_forwards
    state = self.apply_migration(state,migration,line 227,in apply_migration
    state = migration.apply(state,schema_editor)
  File "/Users/myname/.local/share/virtualenvs/mobiusAPI-NVQT3lgx/lib/python3.8/site-packages/django/db/migrations/migration.py",line 114,in apply
    operation.state_forwards(self.app_label,project_state)
  File "/Users/myname/.local/share/virtualenvs/mobiusAPI-NVQT3lgx/lib/python3.8/site-packages/django/db/migrations/operations/special.py",line 101,in state_forwards
    state_operation.state_forwards(app_label,state)
AttributeError: 'str' object has no attribute 'state_forwards'

我也试图在我的psql shell中单独运行这些命令,它们可以正常工作,所以我认为这与模型或表无关。不过,我想将其放入迁移中,因此,如果其他人设置了本地数据库,请确保它会发生。什么是state_forwards,为什么会出现此错误

感谢您的帮助!

解决方法

只有RunSql个参数中的第一个是查询。

签名为:RunSQL(sql,reverse_sql=None,state_operations=None,hints=None,elidable=False)

因此您以state_operation的形式传递了第三个查询,该查询需要一个操作列表。

每个查询需要有1个RunSql,或者根据文档,传递一个sql查询数组:

operations = [
  migrations.RunSQL([
    "QUERY1","QUERY2",...
    ])
]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?