【发布时间】:2014-07-03 14:38:38
【问题描述】:
情况是我们正在生成一个 sqlite 数据库作为输出。
我想看看所说的数据库是否等于预期的数据库文件。
到目前为止,我一直在使用 sqlite3 生成转储然后比较文件,如以下问题中所建议:How to compare two sqlite databases on linux。
这很适合我们的目的,但是我注意到我正在使用用于 linux 的 sqlite3 可执行文件。我正在使用以下代码创建转储:
// call sqlite3 .dump
Process p = Runtime.getRuntime().exec(executeCommand);
这会导致测试在 Windows 环境中失败:
java.io.IOException: Cannot run program "C:\[...]": CreateProcess error=193,
%1 is not a valid Win32 application
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1041)
at java.lang.Runtime.exec(Runtime.java:617)
我想我可以简单地编写一堆查询,或者包含所有 sqlite3 可执行文件,然后检查操作系统并将其隐藏在接口后面,但我想我会先询问是否有人有更简单的解决方案,或者甚至是完全避免该问题的不同方法。
【问题讨论】:
-
"我注意到 sqlite3 依赖于平台。"如何?平台之间有什么区别?
-
已编辑问题以澄清。
-
如果数据库相同,则转储应该相同。这是否归结为关于行尾的问题?
-
毫无疑问,不同的是两个系统之间的环境。不同的目录结构,不同的命令语法等