MariaDB:来自SQL Server的ODBC CONNECT引擎的SELECT INSERT不断导致“错误代码1406数据过长”

时间:2019-08-28 12:44:32

标签: mariadb mariadb-connect-engine

目标:我想使用MariaDB从MS SQL Server中读取一些数据(通过ODBC Connect引擎),然后选择将其插入到本地表中。

问题:即使源和目标varchar字段的大小相同,我仍然会收到“错误代码1406数据太长”的信息(请参阅详细信息)

详细信息: 我要执行的查询的格式为:

@ExceptionHandler(UnrecognizedPropertyException.class)
@ResponseStatus(HttpStatus.UNPROCESSABLE_ENTITY)
public @ResponseBody Error handleUnrecognizedPropertyException(final UnrecognizedPropertyException e, final WebRequest request) {   
 ...
}

上面是导致问题的最小字段子集。

  • 源CONNECT表实际上是SQL Server内部的视图。已定义目标表,使其与ODBC CONNECT表相同(相同的字段名称,相同的NULL constranint,相同的文件类型和大小)
  • 其他两个VARCHAR字段都没有问题
  • INSERT INTO DEST_TABLE(NUMERO_DOCUMENTO) SELECT SUBSTR(TRIM(NUMERO_DOCUMENTO),0,5) FROM CONNECT_SRC_TABLE 字段出现问题,其中输入表的最大长度为14
  • 同一表上的其他两个字段也发生相同的问题

总而言之,这似乎是源数据而不是目标表的问题。

尝试的解决方法

  • 我尝试强制执行无提示的截断,但是在合理的情况下,这没有任何区别:Error Code: 1406. Data too long for column - MySQL
  • 我尝试扩大目标字段,但没有明显的效果NUMERO_DOCUMENTO VARCHAR(14) DEFAULT NULL
  • 我试图修剪源字段(隐藏的空格?),并将其在源处的大小限制为无济于事:NUMERO_DOCUMENTO VARCHAR(100) DEFAULT NULL,但总是返回相同的错误

解决方法:  我尝试使用INSERT INTO DEST_TABLE(NUMERO_DOCUMENTO) SELECT SUBSTR(TRIM(NUMERO_DOCUMENTO),0,5) FROM CONNECT_SRC_TABLE执行相同的操作,此解决方案似乎有效:这意味着问题不在于数据本身,而在于引擎如何执行INSERT SELECT查询

0 个答案:

没有答案