当列存在时没有这样的列

Vic*_*res 5 sqlite errors

我的trackedinfo数据库中有一个表 ( ),它具有以下列(通过运行获得的列PRAGMA table_info(trackedinfo);

表格的列

问题是,即使该列sendok存在,当对具有该字段的数据库运行查询时,它也会引发错误。

示例查询:

SELECT * FROM trackedinfo WHERE sendok IS NULL;
SELECT sendok FROM trackedinfo;
Run Code Online (Sandbox Code Playgroud)

错误:

SQLITE_ERROR: SQL error or missing database (no such column: sendok)
Run Code Online (Sandbox Code Playgroud)

错误

但是,如果我运行一个选择所有字段的查询,它会给我带来以下信息sendok

在此处输入图片说明

这是CREATE数据库的命令:

CREATE TABLE trackedinfo
(
    id INTEGER PRIMARY KEY,
    date_time_start TEXT,
    date_time_end TEXT,
    tracked_name TEXT,
    tracked_origin TEXT,
    tracked_maker TEXT,
    tracked_version TEXT,
    tracked_type TEXT,
    sendok TEXT,
    tracked_id TEXT
);
Run Code Online (Sandbox Code Playgroud)

它也发生在列 tracked_id

我通过执行获得的信息 .schema trackedinfo

CREATE TABLE IF NOT EXISTS "trackedinfo" ("id" INTEGER PRIMARY KEY, "date_time_start" TEXT, "date_time_end" TEXT, "tracked_name" TEXT, "tracked_origin" TEXT, "tracked_maker" TEXT, "tracked_version" TEXT, "tracked_type" TEXT, "sendok " TEXT, "tracked_id " TEXT);
Run Code Online (Sandbox Code Playgroud)

Vic*_*res 7

问题是我在列名的末尾有一个空格,通过删除这些空格解决了这个问题。

前:

CREATE TABLE IF NOT EXISTS "trackedinfo" (
"id" INTEGER PRIMARY KEY, 
"date_time_start" TEXT, 
"date_time_end" TEXT, 
"tracked_name" TEXT, 
"tracked_origin" TEXT, 
"tracked_maker" TEXT, 
"tracked_version" TEXT, 
"tracked_type" TEXT, 
"sendok " TEXT, 
"tracked_id " TEXT);
Run Code Online (Sandbox Code Playgroud)

后:

CREATE TABLE IF NOT EXISTS "trackedinfo" (
"id" INTEGER PRIMARY KEY, 
"date_time_start" TEXT, 
"date_time_end" TEXT, 
"tracked_name" TEXT, 
"tracked_origin" TEXT, 
"tracked_maker" TEXT, 
"tracked_version" TEXT, 
"tracked_type" TEXT, 
"sendok" TEXT, 
"tracked_id" TEXT);
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,“sendok”和“ tracked_id ”列名称中的空格已被删除。

  • 您应该避免引用标识符。如果你这样做,你将不得不在随后的事情中到处这样做。`CREATE TABLE "Ape"...` 与 `CREATE TABLE "APe"...` 不同,而 `CREATE TABLE Ape...` 与 `CREATE TABLE APe...` 相同,你已经注意到, 引号内的空格也很重要。 (2认同)