Ответ 1
В инструкции INSERT
имеется непечатаемый символ 30 (RecordSeparator), вставленный между purchase_date
и '
. Просто удалите текст ('purchase_date')
и перепишите его вручную, это должно быть хорошо.
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" в "списке полей"
Любая идея?
В инструкции INSERT
имеется непечатаемый символ 30 (RecordSeparator), вставленный между purchase_date
и '
. Просто удалите текст ('purchase_date')
и перепишите его вручную, это должно быть хорошо.
Я потратил большую часть дня на то, чтобы понять это. Моя проблема была одна и та же: невидимые персонажи кибошируют запрос и возвращают ошибку "неизвестного столбца".
Я решил это, вернувшись в Windows и удалив мусор с помощью NotePad ++.
Как этот мусор попал туда в первую очередь? Я думаю, что это произошло из-за того, что я допустил ошибку при копировании некоторых сложных сложных запросов в LibreOffice Writer (мой документ с функциональными спецификациями) вместо того, чтобы просто добавлять их в phpMyAdmin или сохранять их в текстовом редакторе. Вставка их из LibreOffice в окно запроса - это то, где (я думаю) возник мусор.
Когда-то там он сохранялся, как малярия. Я даже не мог избавиться от него, вручную перепечатывая весь запрос - мне пришлось поместить его в NotePad ++ (меню кодирования) и показать ANSI и комбайны UTF8, а затем удалить мусор вручную.
Как только это было сделано, запрос работал.
Это также может произойти, если вы вставляете имя столбца при построении структуры таблицы. Такая же ошибка - но непечатаемые/невидимые символы находятся в структуре таблицы, а не в запросе.
Решение Nery ниши, когда я получил эту ошибку.
У меня был триггер BEFORE INSERT
в моей таблице, который сделал что-то с
NEW.`field_mysql_doesnt_think_exists`
, и если я не передал это поле в инструкцию insert, я бы получил
[ERROR in query 3] Unknown column 'field_mysql_doesnt_think_exists' in 'field list'
Это может не помочь кому-то еще, но добавив это "на всякий случай", это помогает кому-то.
В моей ситуации это было другое решение.
Я получаю большие наборы данных в виде файлов 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.