mariadb - MariaDB:从 SQL Server 的 ODBC CONNECT 引擎中选择插入不断导致“错误代码 1406 数据太长”
问题描述
目标:使用 MariaDB,我想从 MS SQL Server 读取一些数据(通过 ODBC 连接引擎)并将其选择插入到本地表中。
问题:即使源 varchar 字段和目标 varchar 字段的大小相同,我也会不断收到“错误代码 1406 数据太长”(请参阅更多详细信息)
详细信息:我尝试执行的查询格式为:
INSERT INTO DEST_TABLE(NUMERO_DOCUMENTO)
SELECT SUBSTR(TRIM(NUMERO_DOCUMENTO),0,5)
FROM CONNECT_SRC_TABLE
以上是导致问题的最小字段子集。
- 源 CONNECT 表实际上是 SQL Server 内部的一个视图。目标表已定义为与 ODBC CONNECT 表相同(相同的字段名称、相同的 NULL 约束、相同的文件类型和大小)
- 其他几个 VARCHAR 字段没有问题
- 问题发生
NUMERO_DOCUMENTO VARCHAR(14) DEFAULT NULL
在输入表的最大长度为 14 的字段上 - 同样的问题也发生在同一张表上的其他 2 个字段上
总而言之,这似乎是源数据而不是目标表的问题。
尝试的解决方法:
- 我试图强制进行静默截断,但是,合理地,这没有任何区别:错误代码:1406。列的数据太长 - MySQL
- 我尝试扩大目标字段但没有明显效果
NUMERO_DOCUMENTO VARCHAR(100) DEFAULT NULL
- 我试图修剪源字段(隐藏空格?)并在源处限制其大小无济于事:
INSERT INTO DEST_TABLE(NUMERO_DOCUMENTO) SELECT SUBSTR(TRIM(NUMERO_DOCUMENTO),0,5) FROM CONNECT_SRC_TABLE
但总是返回相同的错误
解决方法:我尝试使用 a 执行相同的操作,FOR x IN (src_query) DO INSERT .... END FOR
并且此解决方案似乎有效:这意味着问题不在于数据本身,而在于引擎如何执行 INSERT SELECT 查询
解决方案
推荐阅读
- sublimetext3 - 如何保存以 . (点)在 Sublime 中没有提示
- intellij-idea - 在 IntelliJ Idea 社区调试 grails 3.3.11 项目
- google-data-studio - 限制在谷歌数据工作室中计算的行数
- javascript - 增加拼接指数的功能?
- javascript - 如何使用 java 脚本删除 django 动态表单集 - 索引问题?
- angular - 自定义指令更改输入中的数字格式并在 Angular 8 中使用计算中的数字
- flutter - 颤振从json中获取数据“字符串不是Iterable的子类型
" - mysql - SQL 根据第一个值两次从同一个表中获取不同的值
- javascript - 如何在 JavaScript 中对对象的所有值求平方?
- windows - Windows - 使用 CreateProcessWithTokenW 在会话 0 中创建一个进程