web-dev-qa-db-ja.com

SQLite-列が存在する場合、そのような列はありません

データベース内に次の列(PRAGMA table_info(trackedinfo);を実行して取得した列)があるテーブル(trackedinfo)があります

columns of the table

問題は、列sendokが存在しても、そのフィールドを使用してデータベースでクエリを実行すると、エラーがスローされることです。

クエリ例:

SELECT * FROM trackedinfo WHERE sendok IS NULL;
SELECT sendok FROM trackedinfo;

エラー:

SQLITE_ERROR: SQL error or missing database (no such column: sendok)

error

しかし、すべてのフィールドを選択するクエリを実行すると、sendokに関する情報が表示されます。

enter image description here

これはデータベースの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
);

[〜#〜]編集[〜#〜]

tracked_idでも発生します

EDIT 2

.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);

問題は、列の名前の末尾にスペースがあったことです。そのようなスペースを削除することで問題を解決しました。

変更前:

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);

後:

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);