错误代码:1292。截断了错误的DOUBLE值:“ xxx”

时间:2020-07-06 15:39:42

标签: mysql stored-procedures view insert

当我尝试INSERT进入具有从视图中提取的数据的表时遇到此错误。

我注意到有关此错误的许多现有问题与查询中的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,因为该语句位于存储过程中,并遍历一堆数据库,调用附加到每个数据库的视图,然后将此数据插入到单独的表中。 (我知道这不是一个很好的方法,但这是我们继承的遗留问题)

现在,我面临的主要错误是调试该噩梦,它是此查询可在某些数据库上运行,而不适用于其他数据库。我已经检查了正在调用视图的源表,并且没有将DOUBLE作为数据类型的列。

1 个答案:

答案 0 :(得分:0)

发现了问题。

在调查并检查了所有涉及的表中的列类型之后,随着我存储的过程遍历每个数据库,又进行了另一个联接。在该循环中,它在每个数据库上调用了一个视图,并且进行了不正确的联接,这实际上是试图将INT列联接到VARCHAR上。

寻找梦ight,但分解一切并逐步进行确实值得。