错误代码:1292。截断不正确的 DOUBLE 值:'xxx'
Error Code: 1292. Truncated incorrect DOUBLE value: 'xxx'
当我尝试 INSERT
使用从视图中提取的数据 table 时遇到此错误。
我注意到关于此错误的许多现有问题都与查询的 ON
或 AND
条件有关,但我没有这些问题。我调用的是一个简单的 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 列。
找到噩梦,但将所有内容分解并 运行 一步一步来确实值得。
当我尝试 INSERT
使用从视图中提取的数据 table 时遇到此错误。
我注意到关于此错误的许多现有问题都与查询的 ON
或 AND
条件有关,但我没有这些问题。我调用的是一个简单的 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 列。
找到噩梦,但将所有内容分解并 运行 一步一步来确实值得。