SQLite zwraca błąd «nie taki jak kolumny: foo», jeśli tabela nie zawiera kolumny:
select foo from yourTable limit 1
Ponadto można uzyskać instrukcję create-table:
select sql from sqlite_master where tbl_name = 'YourTableName'
, a następnie przeanalizować wynik, szukając nazwy kolumny. Nie znam eleganckiego sposobu sprawdzania listy kolumn dla określonej tabeli, chociaż może istnieć.
Także jeśli spróbujesz to zrobić:
alter table YourTable add column foo {column-def whatever it is}
pojawi się błąd z SQLite jeśli kolumna już istnieje. Możesz również złapać ten błąd.
Wreszcie można to zrobić:
select sql from sqlite_master
where tbl_name = 'YOURTABLE' and sql like '%"foo" CHAR%'; -- or whatever type
i jeśli podana tabela zawiera kolumny, który jest otoczony cudzysłowami w zapytaniu, a z typem podałeś, można uzyskać wynik, w innym przypadku pusty zestaw. Określenie typu danych zapewnia, że podłańcuch LIKE jest zgodny z nazwą kolumny.
można przeglądać za pomocą kolumn tabeli „TableName .schema” – krakover
@krakover Czy to nie jest odpowiedź? –
@goreSplatter W zależności od tego, co próbuje osiągnąć. Wyjaśniłem, jak uniknąć problemu, a nie jak go rozwiązać .. \ – krakover