QSqlite在Windows和Linux上的不同行为

时间:2013-12-15 15:58:54

标签: c++ database linux qt sqlite

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

我在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上它不起作用:它说

  

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

当我明确输入main.X时,它没有说明这样的表。

发生了什么事?

1 个答案:

答案 0 :(得分:0)

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

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