未找到列:1044 INSERT查询中的未知列`last field`?

时间:2015-02-19 00:25:07

标签: php mysql laravel

我对MySQL插件有一个奇怪的问题。它无法找到最后一个字段,无论它的名字是什么:

insert into
    `exams` (`abbr`, `due_days`, `name`, `section_id`, `id`)
values
    ('PT', 1, 'PT - TIEMPO DE PROTROMBINA.', 2, 129);
--------------------------------------------------------------------
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'id' in 'field list' (SQL: insert into `exams` (`abbr`, `due_days`, `name`, `section_id`, `id`) values (PT, 1, PT - TIEMPO DE PROTROMBINA., 2, 129)

我的表:

CREATE TABLE `exams` (
  `id` int(11) NOT NULL,
  `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `abbr` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `due_days` int(11) NOT NULL,
  `section_id` int(11) NOT NULL,
  `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
  • 这里有趣的事实是这个id列存在,但MySQL无法找到它。
  • 我试图重命名它,但它不起作用
  • 我尝试删除反引号但它只能在控制台中运行,在我的PHP查询构建器中它不起作用
  • 我试图删除这个字段,但后来我注意到这个外部行为:

insert into
    `exams` (`abbr`, `due_days`, `name`, `section_id`)
values
    ('PT', 1, 'PT - TIEMPO DE PROTROMBINA.', 2);
--------------------------------------------------------------------
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'section_id' in 'field list' (SQL: insert into `exams` (`abbr`, `due_days`, `name`, `section_id`) values (PT, 1, PT - TIEMPO DE PROTROMBINA., 2)

最后一栏有错误...... 我在不同的机器上测试了MySQL 5.6和MariaDB 10.0,但我得到了确切的结果。


我正在使用Laravel 5,我甚至可以从查询构建器中删除反引号,但这不起作用。

2 个答案:

答案 0 :(得分:2)

我认为您从某些PDF或其他地方复制并过去了您的查询(或查询的一部分),我在自己的系统上尝试过,当我从您的问题中复制查询时,我得到了错误(我猜)他们是一些不可打印的代码 - Unicode字符,那些不可见)。然后我手工重写查询,它有效!检查如下:

enter image description here

注意:我没有更改您的创建查询。刚从我的MySQL解释器复制粘贴你的问题。

手动重写你的查询它有效!我刚刚编辑了id\)和双引号字符串。

enter image description here

试一试!!

答案 1 :(得分:2)

id是插入时必须有一个值的主键,也许它应默认为自动增量

只需更改:

`id` int(11) NOT NULL,

为:

`id` int(11) NOT NULL AUTO_INCREMENT,