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 简单查询(实际上这个查询特别复杂)。
记录错误发生在这个字段上,因为那是我忘记申报的字段。
谢谢你们的时间。
有人可以解释为什么我在 运行 这个查询后收到错误代码 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 简单查询(实际上这个查询特别复杂)。
记录错误发生在这个字段上,因为那是我忘记申报的字段。
谢谢你们的时间。