"Неизвестный столбец в" списке полей "", но столбец существует

DROP TABLE IF EXISTS `transactions`;
CREATE TABLE `transactions` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `purchase_date` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `transactions` (`purchase_date`) VALUES (NULL)

Я изолировал свою проблему в этом коде. Когда я запустил его, я получаю сообщение об ошибке:

[ОШИБКА в запросе 3] Неизвестный столбец "buy_date" в "списке полей"

Любая идея?

Ответ 1

В инструкции INSERT имеется непечатаемый символ 30 (RecordSeparator), вставленный между purchase_date и '. Просто удалите текст ('purchase_date') и перепишите его вручную, это должно быть хорошо.

Ответ 2

Я потратил большую часть дня на то, чтобы понять это. Моя проблема была одна и та же: невидимые персонажи кибошируют запрос и возвращают ошибку "неизвестного столбца".

Я решил это, вернувшись в Windows и удалив мусор с помощью NotePad ++.

Как этот мусор попал туда в первую очередь? Я думаю, что это произошло из-за того, что я допустил ошибку при копировании некоторых сложных сложных запросов в LibreOffice Writer (мой документ с функциональными спецификациями) вместо того, чтобы просто добавлять их в phpMyAdmin или сохранять их в текстовом редакторе. Вставка их из LibreOffice в окно запроса - это то, где (я думаю) возник мусор.

Когда-то там он сохранялся, как малярия. Я даже не мог избавиться от него, вручную перепечатывая весь запрос - мне пришлось поместить его в NotePad ++ (меню кодирования) и показать ANSI и комбайны UTF8, а затем удалить мусор вручную.

Как только это было сделано, запрос работал.

Ответ 3

Это также может произойти, если вы вставляете имя столбца при построении структуры таблицы. Такая же ошибка - но непечатаемые/невидимые символы находятся в структуре таблицы, а не в запросе.

Ответ 4

Решение Nery ниши, когда я получил эту ошибку.

У меня был триггер BEFORE INSERT в моей таблице, который сделал что-то с NEW.`field_mysql_doesnt_think_exists` , и если я не передал это поле в инструкцию insert, я бы получил

[ERROR in query 3] Unknown column 'field_mysql_doesnt_think_exists' in 'field list'

Ответ 5

Это может не помочь кому-то еще, но добавив это "на всякий случай", это помогает кому-то.

В моей ситуации это было другое решение.

Я получаю большие наборы данных в виде файлов CSV Excel и использую (WIL) script для преобразования CSV файла в импортируемый файл .sql. У меня была ошибка в моей script, в которой эти две строки не ссылались на одно и то же имя таблицы (я был жестко закодирован в первом месте и забыл его обновить):

* "INSERT INTO `old_table_name` (`cid`, `date`, etc etc"
* "CREATE TABLE IF NOT EXISTS `":_dbName:"` (etc etc "

Я только что изменил первую строку, чтобы получить имя таблицы из этой переменной, и voila!

* "INSERT INTO `":_dbName:"` (`cid`, `date`, etc etc"

Итак, проверьте эти две строки в файле импорта SQL.