错误代码:1292。截断不正确的 DOUBLE 值:'xxx'

Error Code: 1292. Truncated incorrect DOUBLE value: 'xxx'

当我尝试 INSERT 使用从视图中提取的数据 table 时遇到此错误。

我注意到关于此错误的许多现有问题都与查询的 ONAND 条件有关,但我没有这些问题。我调用的是一个简单的 SELECT x FROM ... 视图,就像这样...

@query_statement = CONCAT('insert into target_table SELECT

mv.col1

mv.col2

mv.col3

FROM (',database_name,'.myView mv) );

你会注意到我使用了一个变量 database_name 因为这条语句位于一个存储过程中并循环遍历一堆数据库,调用每个数据库附加的视图,然后将这些数据插入一个单独的 table. (我知道这不是一个很好的方法,但这是我们继承的遗留问题)

现在我面临的主要错误是这个查询在某些数据库上有效,但在其他数据库上无效,这使调试成为一场噩梦。我检查了调用视图的源 table,没有任何列的数据类型为 DOUBLE。

找到问题了。

在调查和检查所有涉及的表中的列类型之后,当我的存储过程循环遍历每个数据库时,还有另一个连接正在进行。在那个循环中,它调用了每个数据库的视图,并且正在进行一个不正确的连接,它确实试图将一个 INT 列连接到一个 VARCHAR 列。

找到噩梦,但将所有内容分解并 运行 一步一步来确实值得。