1

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

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

很明显,列数是相同的,所以真正的问题必须在其他地方。但是哪里?字段完全相同:

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

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

有任何想法吗?谢谢。

4

2 回答 2

0

正如蒂姆所提到的,请向我们提供表格方案和更多信息,因为我没有在上面看到错误。例如:

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

此查询有效,其中 TAG 为 varchar(255) 且失效为整数。

于 2018-02-27T09:38:53.243 回答
0

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

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

对于这个字段发生的记录错误,因为那是我忘记声明的那个。

谢谢你们的时间。

于 2018-02-27T14:13:24.470 回答