django - 使用 DBeaver 将数据从 SQLite3 迁移到 Postgresql
问题描述
我的项目使用 SQLite3 数据库,但现在我需要从 SQLite3 迁移到 PostgreSQL。我已经使用 DBeaver 使用“导入数据”选项来执行此操作。在将所有表从 SQLite3 导入 PostgreSQL 结束时,我在尝试添加新内容时注意到了这个错误:
/engine/kernel/keyconcept/add/ 处的 IntegrityError
重复键值违反了唯一约束“kernel_keyconcept_pkey”详细信息:键 (id)=(4) 已存在。
如果我在这个项目中添加一个使用新 DB(PostgreSQL) 的新模型,添加内容没有问题,但是如果我使用旧模型,我会看到上面的IntegrityError。
我已经对只有两行的模型进行了测试:第一次尝试时我收到了相同的错误,但键 ID 为 1,第二次尝试时我收到了相同的错误,但键 ID 为 2。当我尝试过我第三次能够添加内容,并且在下一次尝试中也会发生同样的想法。
所以我认为迁移后每个表的行计数器永远不会从最后一个内容开始,而是从零开始。这很奇怪,因为以前我做过相同的迁移,但是从 SQLite3 到 SQLite3 没有问题。
我该如何解决这个问题?
解决方案
您必须重置用于生成主键的序列。有一个管理命令打印必要的 SQL:sqlsequencereset
请注意,它只打印 SQL,您必须手动执行它(您可以使用 DBeaver 执行此操作)。
推荐阅读
- python - 根据指定的索引对数据框进行排序
- php - 客户端 jQuery 文件上传(多上传)
- node.js - “EPERM:不允许操作,重命名”当使用带有会话文件存储的快速会话时
- java - 如何在 Fluentd Java API 中定义日志严重级别?
- google-cloud-platform - 在谷歌上设置 Kubernetes 以容纳多个客户的最佳方式
- javascript - Dated-fns 无法解析 ISO 日期
- javascript - 为什么字符串没有被大写字母替换
- regex - 否定正则表达式中的特定单词
- php - 如何从表名是变量的 MySQL 更新
- sql-server - 如何让用户拥有特定日期的数据而没有其他日期的数据