Mysql 错误代码 1222,选择了单个列?

Mysql error code 1222 with a single column selected?

有人可以解释为什么我在 运行 这个查询后收到错误代码 1222(使用的 SELECT 语句有不同的列数)吗?

INSERT IGNORE INTO table1(id1)
SELECT id2 FROM table2;

很明显列数是一样的,所以真正的问题一定是在别的地方。但是哪里?字段完全相同:

`id2` int(11) NOT NULL COMMENT 'blabla'

唯一的区别是数据库引擎(表 2 上的 MyISAM,表 1 上的 InnoDB),但它不能链接,因为如果我在 INSERT/SELECT 中添加更多列而没有这个,它就像一个魅力.

有什么想法吗?谢谢

正如Tim所说,请提供table方案和更多信息,因为我没有看到上面的错误。 例如:

INSERT IGNORE INTO test_cachetags (tag, invalidations) SELECT tag, invalidations FROM cachetags;

此查询有效,其中 TAG 是 varchar(255),invalidations 是整数。

好的,我终于找到了问题所在:触发器。基本上我在某个时候拥有的变量数量与列数不匹配。 (https://dev.mysql.com/doc/refman/5.5/en/stored-program-variables.html)。

现在我找到了原因,这似乎很明显,但老实说,MySQL 可能更明确。这不像我在幕后触发了一个 and/or 简单查询(实际上这个查询特别复杂)。

记录错误发生在这个字段上,因为那是我忘记申报的字段。

谢谢你们的时间。