-1

我有一个关系 SQLite 数据库,其中的表通过外键相互访问。当我使用 SqlLiteStudio "Export" 输出到一个新的 SQL 文件时,它会根据表名的字母顺序写出 SQL "CREATE" 和 "INSERT INTO" 语句。然后当我将相同的 SQL 文件导入新数据库时(这需要使用命令“从文件执行 SQL”,因为导入命令似乎只将 csv 导入表中),我得到“没有这样的表”错误,因为尚未读取创建被引用表的行。因此,如果我编辑 SQL 文件以将表放在顶部,则会收到“FOREIGN KEY constraint failed”错误。因此,如果我将 SQL 文件编辑到表创建下方的所有表插入操作,并按表重新排序插入,以便在其表依赖项之前没有表,只有这样我才能成功导入 SQL 文件,重现原始 SQLite 数据库文件。似乎是 SqlLiteStudio 中的一个错误。我想更糟糕的情况是我可以编写一个后处理脚本,但我希望找出人们正在使用的一些更好的方法。我只是更喜欢以文本格式保存以备份到现有的 git repo 中,并且也使以后的 db 迁移更容易。TIA。我只是更喜欢以文本格式保存以备份到现有的 git repo 中,并且也使以后的 db 迁移更容易。TIA。我只是更喜欢以文本格式保存以备份到现有的 git repo 中,并且也使以后的 db 迁移更容易。TIA。

4

1 回答 1

1

您可以在导入前关闭外键支持,然后在导入后使用

PRAGMA foreign_keys = off;
....
PRAGMA foreign_keys = on;

https://sqlite.org/pragma.html#pragma_foreign_keys

于 2021-12-15T10:50:06.007 回答