我正在使用SQLiteStudio 3.0.7 定期转储数据库模式以进行版本控制,它似乎随机更改了表定义的顺序。这对差异造成了严重破坏,因为即使是像添加一两个额外的列这样的小变化似乎也会导致到处都是疯狂的差异。当应该显示的只是行差异时,并排比较可能会导致整个表格被单独列出。
SQLiteStudio 可以配置为正确执行此操作吗?或者 sqlite 本身可以以固定格式的方式执行相同的模式导出吗?
我正在使用SQLiteStudio 3.0.7 定期转储数据库模式以进行版本控制,它似乎随机更改了表定义的顺序。这对差异造成了严重破坏,因为即使是像添加一两个额外的列这样的小变化似乎也会导致到处都是疯狂的差异。当应该显示的只是行差异时,并排比较可能会导致整个表格被单独列出。
SQLiteStudio 可以配置为正确执行此操作吗?或者 sqlite 本身可以以固定格式的方式执行相同的模式导出吗?
SQLiteStudio 按类型(表、索引、触发器、视图)对数据库对象进行排序,但在每个组内,对它们进行随机排序。(如果您认为这是一个错误,请报告它。)
shell按照
sqlite3
它们在表中的存储顺序转储表sqlite_master
,这通常与它们被(重新)创建的顺序相同。要获得一致排序的模式转储输出,您可能希望自己手动处理输出。为此,我制作了一个小帮助脚本:
做我想做的事,但不能保证正确性。然而,每个相应表的列的顺序仍然可以变化。