C++ QSqlite在Windows和Linux上的不同行为

C++ QSqlite在Windows和Linux上的不同行为,c++,database,linux,qt,sqlite,C++,Database,Linux,Qt,Sqlite,我有一个非常棘手的问题: 我在Qt中有这个Qsqlite连接,在主数据库中有一些X表。我添加了另一个带有ATTACH的数据库,它恰好有一个同名(X)的表 我想做的只是得到syncDB表的三列,它们对应于我的mainDB表的三列 所有这些都在Windows(Qt5.something)上运行良好,但在Linux(Ubuntu,Qt4.8版)上运行良好 我经历了一种意想不到的行为: 当我发出以下查询时: qry.exec("INSERT OR IGNORE INTO X SELECT col1, c

我有一个非常棘手的问题:

我在Qt中有这个Qsqlite连接,在主数据库中有一些X表。我添加了另一个带有ATTACH的数据库,它恰好有一个同名(X)的表

我想做的只是得到syncDB表的三列,它们对应于我的mainDB表的三列

所有这些都在Windows(Qt5.something)上运行良好,但在Linux(Ubuntu,Qt4.8版)上运行良好

我经历了一种意想不到的行为:

当我发出以下查询时:

qry.exec("INSERT OR IGNORE INTO X SELECT col1, col2, col3 FROM sync.X");
(从sync.X中获取col1、col2、col3并将其放入main.X(它只有三列)

但是在linux上它不会工作:它说

表X有19列,但只提供了3个值

当我显式键入main.X时,它表示没有这样的表


发生了什么?

这两个错误都表明
main
数据库中没有
X


这通常发生在打开数据库时没有使用正确的目录/文件名时,在这种情况下,SQLite将很高兴地创建一个新的空数据库。

是的……就是这样,它只是没有加载主数据库:D非常感谢
qry.exec("INSERT OR IGNORE INTO X SELECT col1, col2, col3 FROM sync.X");