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

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

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/

相关文章:

sql-server - 尝试将 SQL Server DB 导出到 Azure 并收到错误 : External references are not supported when creating a package from this platform

linux - 通过 Linux 命令行为目录中的所有文件名添加额外的文件扩展名

c++ - 将 typedef 用于 unique_ptr 模板

c++ - std::initializer_list 的语义

c++ - 在 C++ 中通过引用传递数组

C++11 基于范围的 for 循环效率 "const auto &i"与 "auto i"

mysql - 我应该使用 MongoDB 进行网站电子邮件营销吗?

database - SQL Server 2008 r2合并两个数据库的过程是怎样的?

linux - Wayland 服务器何时会 ping 客户端?

linux - 如何在Linux中的给定时间关闭Firefox?