"'字段列表'中的未知列",但列确实存在

Rit*_*its 15 mysql sql innodb insert

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)
Run Code Online (Sandbox Code Playgroud)

我在这段代码中已经解决了我的问题.当我运行它时,我收到错误:

[查询3中的错误]'字段列表'中的未知列'purchase_date'

有人有想法吗?

whe*_*one 22

有插入之间的不可打印字符30(RecordSeparator)purchase_date的和'INSERT发言.只需删除文本('purchase_date')并手动重写它应该没问题.

  • 你怎么知道有一个不可打印的角色? (2认同)
  • 只是运气不好.单击编辑,复制SQL并将其粘贴到显示unprintables的编辑器中. (2认同)

pro*_*ote 7

我花了一天的大部分时间来解决这个问题。我的问题是一样的:不可见的字符阻止查询并返回“未知列”错误。

我通过回到 Windows 并使用 NotePad++ 删除垃圾来解决这个问题。

垃圾最初是怎么进来的?我认为这是因为我犯了一个错误,将一些长而复杂的查询复制到 LibreOffice Writer(我的功能规范文档)中,而不是仅仅在 phpMyAdmin 中为它们添加书签或将它们保存在文本编辑器中。将它们从 LibreOffice 粘贴到查询窗口中就是(我认为)垃圾的来源。

一旦到达那里,它就像疟疾一样持续存在。我什至无法通过手动重新输入整个查询来摆脱它——我必须将其放入 NotePad++(编码菜单)并显示 ANSI 和 UTF8 组合,然后手动删除垃圾。

完成后,查询就起作用了。


Lew*_*wis 5

我收到此错误的Nery利基解决方案。

我的BEFORE INSERT表上有一个触发器,该触发器可以执行某些操作, NEW.`field_mysql_doesnt_think_exists` 如果不将该字段传递给插入语句,那么我会得到

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

  • 这个答案让我想到了我遇到的问题。 (2认同)
  • 谢谢你!我对这里发生的事情感到很困惑。对于其他人检查表上的触发器,您可以使用显示触发器,例如“table_name”。 (2认同)