我有一个非常棘手的问题:
我在 Qt 中有这个 Qsqlite 连接,并且在主数据库中有一些 X 表。我使用 ATTACH 添加另一个数据库,该数据库恰好有一个同名的表 (X)。
So -> mainDB: X has 3 columns, syncDB: X has 19 columns
我想要做的只是获取syncDB表的三列,它们对应于我的mainDB表的三列。
一切在 Windows(qt 5.something)上都运行得很好,但是在 Linux(Ubuntu、Qt 版本 4.8)上,
我遇到了意想不到的行为:
当我发出以下查询时:
qry.exec("INSERT OR IGNORE INTO X SELECT col1, col2, col3 FROM sync.X");
(从sync.X中取出col1,col2,col3并将其放入main.X(只有三列)
但是在 Linux 上它不起作用:它说
table X has 19 columns, but only 3 values were supplied.
当我显式键入 main.X 时,它说没有这样的表。
发生了什么?
最佳答案
这两个错误都表明 main
数据库中没有 X
表。
当打开数据库时没有使用正确的目录/文件名时,通常会发生这种情况,在这种情况下,SQLite 会很乐意创建一个新的空数据库。
关于c++ - QSqlite 在 Windows 和 Linux 上的不同行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20596468/