OGG ERRORS 总结
Table of Contents
1 libnnz11.so
完整的错误信息以下: css
ggsci: error while loading shared libraries: libnnz11.so: cannot open shared object file: No such file or directory
在经过ggsci启动时,有可能会遇到如上错误。找不到libnnz11.so动态库文 件. 经过find命令发现该文件在"$ORACLE_HOME/lib"路径中存在的: html
$ find $ORACLE_HOME/ -name libnnz11.so /u01/app/oracle/product/11.2.0/dbhome_1/inventory/Scripts/ext/lib/libnnz11.so /u01/app/oracle/product/11.2.0/dbhome_1/inventory/backup/2019-03-08_10-41-36PM/Scripts/ext/lib/libnnz11.so /u01/app/oracle/product/11.2.0/dbhome_1/lib/libnnz11.so
难道是LD_LIBRARY_PATH 没有配置该路径么? java
查看LD_LIBRARY_PATH 配置: python
$ echo $LD_LIBRARY_PATH /u01/app/oracle/product/11.2.0/dbhome_1/lib:/opt/jdk1.8.0_181//jre/lib/amd64/server/:/opt/jdk1.8.0_181//lib:
配置是对的。那问题出在哪儿呢? mysql
追踪进程吧: sql
strace ggsci execve("/u01/app/ogg/ggsci", ["ggsci"], [/* 28 vars */]) = 0 .......... mmap(NULL, 2197528, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f6c71c70000 mprotect(0x7f6c71c89000, 2093056, PROT_NONE) = 0 mmap(0x7f6c71e88000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x18000) = 0x7f6c71e88000 close(3) = 0 open("/u01/app/ogg/libnnz11.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) open("./tls/x86_64/libnnz11.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) open("./tls/libnnz11.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) open("./x86_64/libnnz11.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) open("./libnnz11.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) open("/lib64/tls/x86_64/libnnz11.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) stat("/lib64/tls/x86_64", 0x7ffd64847c10) = -1 ENOENT (No such file or directory) open("/lib64/tls/libnnz11.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) stat("/lib64/tls", {st_mode=S_IFDIR|0555, st_size=6, ...}) = 0 open("/lib64/x86_64/libnnz11.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) stat("/lib64/x86_64", 0x7ffd64847c10) = -1 ENOENT (No such file or directory) open("/lib64/libnnz11.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) stat("/lib64", {st_mode=S_IFDIR|0555, st_size=77824, ...}) = 0 open("/usr/lib64/tls/x86_64/libnnz11.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) stat("/usr/lib64/tls/x86_64", 0x7ffd64847c10) = -1 ENOENT (No such file or directory) open("/usr/lib64/tls/libnnz11.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) stat("/usr/lib64/tls", {st_mode=S_IFDIR|0555, st_size=6, ...}) = 0 open("/usr/lib64/x86_64/libnnz11.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) stat("/usr/lib64/x86_64", 0x7ffd64847c10) = -1 ENOENT (No such file or directory) open("/usr/lib64/libnnz11.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) stat("/usr/lib64", {st_mode=S_IFDIR|0555, st_size=77824, ...}) = 0 writev(2, [{"ggsci", 5}, {": ", 2}, {"error while loading shared libra"..., 36}, {": ", 2}, {"libnnz11.so", 11}, {": ", 2}, {"cannot open shared object file", 30}, {": ", 2}, {"No such file or directory", 25}, {"\n", 1}], 10ggsci: error while loading shared libraries: libnnz11.so: cannot open shared object file: No such file or directory ) = 116 exit_group(127) = ? +++ exited with 127 +++
从追踪结果来看,ggsci 设定的查询路径是"u01/app/ogg"(这是个人 OGG_HOME路径),及该路径下的tls, "/lib64","/usr/lib64" 三个主路径, 并无根据LD_LIBRARY_PATH的设置去查找。那么咱们只有一个办法: 将该库文件复制一份到 以上三个路径中的一个便可。 shell
解决方法 sass
cp $ORACLE_HOME/lib/libnnz11.so $OGG_HOME/
2 00446
2.1 missing filename opening checkpoint file
2.1.1 错误信息
2019-07-02t23:26:17.998+0800 error ogg-00446 oracle goldengate delivery, xmsys.prm: missing filename opening checkpoint file. 2019-07-02t23:26:17.999+0800 error ogg-01668 oracle goldengate delivery, xmsys.prm: process abending.
2.1.2 分析与解决
出现此错误,缘由是参数配置与命令不匹配。好比from file方式的数据应用进程,若是使用ggsci命令start命令 来启动, 则会出现这种错误。下面是两个案例,根本缘由都是命令与参数配置不匹配,一种是初始化,一种是实时 应用。 ruby
- 案例1->初始化
参数配置 如下配置为一例 OGG FOR KAFKA 的 FROM FILE 方式初始化应用进程的配置。 bash
SPECIALRUN END RUNTIME SETENV(NLS_LANG="AMERICAN_AMERICA.ZHS16GBK") TARGETDB LIBFILE LIBGGJAVA.SO SET PROPERTY=DIRPRM/XMINS.PROPS EXTFILE DIRDAT/II REPORTCOUNT EVERY 1 MINUTES , RATE GROUPTRANSOPS 10000
启动命令
START INITSP
日志
......... 2019-07-02T23:26:15.409+0800 INFO OGG-01360 ORACLE GOLDENGATE DELIVERY, XMSYS.PRM: REPLICAT IS RUNNING IN SPECIAL RUN MODE. 2019-07-02T23:26:15.615+0800 INFO OGG-15052 ORACLE GOLDENGATE DELIVERY, XMSYS.PRM: USING JAVA CLASS PATH: GGJAVA/GGJAVA.JAR:GGJAVA/RESOURCES/LIB/OPTIONAL/LOG4J-API-2.9.1.JAR:GGJAVA/RESOURCES/LIB/OPTIONAL/LOG4J-CORE-2.9.1.JAR:GGJAVA/RESOURCES/LIB/OPTIONAL/LOG4J-SLF4J-IMPL-2.9.1.JAR. 2019-07-02T23:26:17.988+0800 INFO OGG-01815 ORACLE GOLDENGATE DELIVERY, XMSYS.PRM: VIRTUAL MEMORY FACILITIES FOR: COM ANON ALLOC: MMAP(MAP_ANON) ANON FREE: MUNMAP FILE ALLOC: MMAP(MAP_SHARED) FILE FREE: MUNMAP TARGET DIRECTORIES: /HOME/OGG/DIRTMP. 2019-07-02T23:26:17.998+0800 ERROR OGG-00446 ORACLE GOLDENGATE DELIVERY, XMSYS.PRM: MISSING FILENAME OPENING CHECKPOINT FILE. 2019-07-02T23:26:17.999+0800 ERROR OGG-01668 ORACLE GOLDENGATE DELIVERY, XMSYS.PRM: PROCESS ABENDING.
解决
经过操做系统命令 REPLICAT 执行初始化:
$OGG_HOME/REPLICAT PARAMFILE $OGG_HOME/DIRPRM/XMSYS.PRM
- 案例2->实时抽取
参数配置
passthru rmthost 192.168.153.129, mgrport 7809 rmttrail /u02/ggs/dirdat/td gettruncates table scott.*; sequence scott.*;
分析
做为抽取进行,第一行应为进程类型标识,应为:
extract <group name>
2.2 could not find archived log
遇到这个错误时,有可能真的是找不到归档文件,而有的时候可能未配置必要参数引发的找不到归档文件。
2.2.1 错误信息
在ggserr.log 中发现以下错误:
2019-05-31t10:56:53.629+0800 error ogg-00446 oracle goldengate capture for oracle, extxmdev.prm: could not find archived log for sequence 2649 thread 1 under default destinations sql <select name from v$archived_log where sequence# = :ora_seq_no and thread# = :ora_thread and resetlogs_id = :ora_resetlog_id and archived = 'yes' and deleted = 'no' and name not like '+%' and standby_dest = 'no' >, error retrieving redo file name for sequence 2649, archived = 1, use_alternate = 0not able to establish initial position for sequence 2649, rba 13816848. 2019-05-31t10:56:53.641+0800 error ogg-01668 oracle goldengate capture for oracle, extxmdev.prm: process abending.
2.2.2 分析与解决
从错误信息提示来看,是归档日志找不到引发的中断。那么归档文件是否是真的不存在呢?
- 归档不存在
经查看归档日志确实不存在。可根据数据的重要性采起不一样的方法来处理此错误。
- 数据不重要
-
此时能够修改extract 的起始值,跳过缺失的归档文件,这在测试和开发环境 中应用较多。 首先查看可用归档:
select sequence# ,first_change#, next_change# ,deleted,applied,status from v$archived_log; sequence# first_change# next_change# del applied s ---------- ------------- ------------ --- --------- - 3759 16360310 16401138 yes no a 3760 16401138 16419033 no no a
从上面的查询结果来看,3759号归档已被删除,最新可用归档是3760. 对应最先的 scn号是16401138. 将extract 进程的scn 值调整至16401138:
alter extrace extxmdev, scn 16401138 start ext extxmdev
- 数据重要
- 此时须要从备份中恢复相应的归档文件
- 归档存在
归档存在,仍遇到这种错误,颇有可能 OGG所查找的归档文件与实际归档文件的存储路 径不一样 。这种状况在源端为RAC环境中较为常见。由于 OGG 是经过oracle instance 中的参数来查找归档文件的: log_archive_dest[_n]/log_archive_format 而RAC 存储归档至ASM时,实际存储路径可能与参数配置有差别(由于ASM实行文件名自动管理).
这种状况 ,主要是经过tranlogoptions参数,让OGG 登陆 ASM实例查找正确的归档文件。 须要在extract进程中配置以下参数:
tranlogoptions asmuser <username@tnsname>,ASMPASSWORD <passwrod> tranlogoptions rawdeviceoffset 0
3 00918
key column unid is missing from map ogg for bigdata中, 咱们可能只须要某些字段。而同步的这些字段里并无主键, 或者是没有包含所有的主键列。在replicat 端会遇到这个问题。
- 解决办法 在 colmap() 后加上keycols(用于作主键的字段) 便可。
4 01168
错误信息:
error ogg-01168 encountered an update for target table <schema>.<table_name>, which has no unique key defined. keycols can be used to define a key. use allownoopupdates to process the update without applying it to the target database. use applynoopupdates to force the update to be applied using all columns in both the set and where clause
分析
ogg 同步update 操做,若是目标库中表上没有主键,ogg 没法保证操做的惟一性,因 此会报错。对于这种没有主键表的操做,oracle官方给出了几点建议.看法决方案.
- 解决方法
- allownoopupdates 配置此参数后,将跳过该update操做
- applynoopupdates 配置此参数后, 将强制应用update操做.即根据set 和where 来肯定操做范围。
- keycols 在原表定义keycols
- sys_guid 在不知足如下几种状况时,建议在原表创建sys_guid。
- 表上没有或者不适合经过keycols 关键词创建逻辑列.
- 没有重复行
- 表行数少
- 表上的dml操做较少,即便对表上全部字段开启supplimental log 也不会生成大量的redo log.
5 01201
这种错误,出现的场景之一是 direct load 加载数据,遇到此错误时,mgr会根据不一样的缘由给出不一样的提示。
5.1 案例1
错误信息
2019-07-01 06:25:33 info ogg-00993 oracle goldengate capture for oracle, initfj.prm: extract initfj started. 2019-07-01 06:25:33 error ogg-01201 oracle goldengate capture for oracle, initfj.prm: error reported by mgr : access denied. 2019-07-01 06:25:33 error ogg-01668 oracle goldengate capture for oracle, initfj.prm: process abending.
目标端mgr report信息:
warning ogg-00936 access denied (request from xxx.xxx.x.xxx, rule #0).
分析与解决
根据mgr提示的信息,rule #0 说明没有rule规则。这个rule 是mgr里的一个属性,相似于防火墙,表示是否容许远程访问。其语法规则以下:
accessrule[, prog program_name][, ipaddr address][, pri rule][, login_id]{, allow | deny}
在mgr配置文件中添加以下内容便可,表示全部接受全部远程链接。
accessrule, prog *, ipaddr *, allow
5.2 案例2
错误信息 extract 日志:
2019-07-11t10:34:26.437+0800 info ogg-00993 oracle goldengate capture for oracle, gjxm.prm: extract gjxm started. 2019-07-11t10:34:26.440+0800 error ogg-01201 oracle goldengate capture for oracle, gjxm.prm: error reported by mgr : parameter file /home/ogg/dirprm/gjxm.prm does not exist.
- 分析与解决 提示找不到参数文件,实际的缘由,有多是真的找不到参数文件。也有多是连不上对应的mgr(端口不对,或者目标端的mgr已经停掉)。 那么有如下几种可能:
- extract 指定的rmttask,没有相应的参数文件
- extract参数配置不正确(主要是rmthost 和 mgrport)
目标端mgr未启动 链接目标端执行以下内容:
ggsci info all
正常状况mgr的状态应是running:
program status group lag at chkpt time since chkpt manager running
6 01223
6.0.1 场景1
进行数据初始化,使用rmtfile参数,直接将数据抽取到目标端服务器路径。因为以前出现问题,从新抽取时出现以下错误:
源端
2019-09-09T23:17:54.113+0800 INFO OGG-01230 Oracle GoldenGate Capture for Oracle, initzg.prm: Recovered from TCP error, host 192.168.153.21, port 7811. 2019-09-09T23:17:54.119+0800 WARNING OGG-01223 Oracle GoldenGate Capture for Oracle, initzg.prm: TCP/IP error 104 (Connection reset by peer), endpoint: 192.168.153.21:7811.
目标端
2019-09-09T23:17:49.108+0800 INFO OGG-01228 Oracle GoldenGate Collector: Timeout in 300 seconds. 2019-09-09T23:17:54.113+0800 INFO OGG-01229 Oracle GoldenGate Collector: Connected to ::ffff:192.168.180.1:41035. 2019-09-09T23:17:54.114+0800 WARNING OGG-01223 Oracle GoldenGate Collector: Error happened while opening the file. ERRNO = 0.
- 解决 清除目标端原有的数据文件,从新发起进程。
6.0.2 场景2
源端 view report 查看到的报错日志:
ThreadBacktrace : [14] elements : [/ogg/12c/libgglog.so(CMessageContext::AddThreadContext()+0x1e) [0x7fc078648ede]] : [/ogg/12c/libgglog.so(CMessageFactory::CreateMessage(CSourceContext*, unsigned int, ...)+0x340) [0x7fc078643bf0]] : [/ogg/12c/libgglog.so(_MSG_ERR_TCP_RECEIVE_PARAMS_ERROR(CSourceContext*, char const*, CMessageFactory::MessageDisposition)+0x31) [0x7fc07862547b]] : [/ogg/12c/extract(complete_tcp_msg(extract_def*)+0x607) [0x55a02d]] : [/ogg/12c/extract(flush_tcp(extract_def*, int)+0x23a) [0x55a4fa]] : [/ogg/12c/extract() [0x574b1c]] : [/ogg/12c/extract(RECOVERY_initialize()+0x515) [0x571175]] : [/ogg/12c/extract(extract_main(int, char**)+0x345) [0x5bd365]] : [/ogg/12c/extract(ggs::gglib::MultiThreading::MainThread::ExecMain()+0x4f) [0x6a8e1f]] : [/ogg/12c/extract(ggs::gglib::MultiThreading::Thread::RunThread(ggs::gglib::MultiThreading::Thread::ThreadArgs*)+0x104) [0x6a9324]] : [/ogg/12c/extract(ggs::gglib::MultiThreading::MainThread::Run(int, char**)+0x8b) [0x6a96eb]] : [/ogg/12c/extract(main+0x3f) [0x5bcdcf]] : [/lib64/libc.so.6(__libc_start_main+0xfd) [0x331161ed5d]] : [/ogg/12c/extract() [0x52eb29]] 2016-03-11 11:54:33 ERROR OGG-01232 Receive TCP params error: TCP/IP error 104 (Connection reset by peer), endpoint: 172.19.41.35:17811. 2016-03-11 11:54:33 ERROR OGG-01668 PROCESS ABENDING.
解决方法
alter extract <extract group name> ,etrollover
执行此命令,使用关键词etrollover 的做用是强制生成一个新的文件。
6.0.3 场景3
extract 抽取数据,经过rmthost ,rmtfile/rmttrail直接将数据发送到目标端服务器。
源端
2016-08-02 01:08:16 WARNING OGG-01223 Oracle GoldenGate Capture for Oracle, lpg2.prm: TCP/IP error 104 (Connection reset by peer), endpoint: {target ip removed by me} :7810. 2016-08-02 01:08:37 INFO OGG-01230 Oracle GoldenGate Capture for Oracle, lpg2.prm: Recovered from TCP error, host {target ip removed by me}, port 7811. 2016-08-02 01:08:37 ERROR OGG-01033 Oracle GoldenGate Capture for Oracle, lpg2.prm: There is a problem in network communication, a remote file problem, encryption keys for target and source do not match (if using ENCRYPT) or an unknown error. (Remote file
目标端
2016-08-01 20:08:37 WARNING OGG-01223 Oracle GoldenGate Collector for Oracle: Unable to lock file "/u01/app/oracle/product/ggate/dirdat/g2000000000" (error 11, Resource temporarily unavailable). Lock currently held by process id (PID) 20290.
解决方法 在 RMTHOST 一行 添加 NOSTREAMING 关键词。即异步方式传输数据。
RMTHOST *.*.*.* MGRPORT 7809 NOSTREAMING
7 01877
- 错误信息
2019-06-27T04:04:42.653+0800 WARNING OGG-00938 Oracle GoldenGate Manager for MySQL, mgr.prm: Manager is stopping at user request. 2019-06-27T06:53:06.837+0800 INFO OGG-00987 Oracle GoldenGate Command Interpreter for MySQL: GGSCI command (ogg): start mgr. 2019-06-27T06:53:07.175+0800 WARNING OGG-01877 Oracle GoldenGate Manager for MySQL, mgr.prm: Missing explicit accessrule for server collector.
- 缘由
经过shell 方式添加参数文件,可是未添加初始化进程。使用以下命令添加:
add replicat <group name>, specialrun
extract / replicat 参数文件中未找到 groupname 参数文件中第一行,应该是
extract <group name>
或者
replicat <group name>
若是第一未指定 group name,会遇到这种错误。
8 02422
源端日志报错信息
2019-07-01 06:53:27 INFO OGG-00993 Oracle GoldenGate Capture for Oracle, initfj.prm: EXTRACT INITFJ started. 2019-07-01 06:54:00 WARNING OGG-01194 Oracle GoldenGate Capture for Oracle, initfj.prm: EXTRACT task INITFJ abended : Initial data load error reported by REPLICAT. 2019-07-01 06:54:00 ERROR OGG-01203 Oracle GoldenGate Capture for Oracle, initfj.prm: EXTRACT abending. 2019-07-01 06:54:00 ERROR OGG-01668 Oracle GoldenGate Capture for Oracle, initfj.prm: PROCESS ABENDING.
目标端报错信息
2019-06-26T18:20:28.369+0800 ERROR OGG-02422 Oracle GoldenGate Delivery for MySQL: Could not open checkpoint file /home/ogg/ogg_for_mysql/dirchk/INITFJ.cpr (error 2, No such file or directory). 2019-06-26T18:20:33.371+0800 ERROR OGG-01668 Oracle GoldenGate Delivery for MySQL: PROCESS ABENDING.
分析
从目标端的错误信息来看,很明显是文件或者路径不存在。在mgr 配置里,若是有 usecheckpoint , 那么replicate 必定要能够生成cpr文件(检查点文件),文件名规则为 replicate_name.cpr。
解决
若是dirchk目录下有其余的检查点文件, 根据命名规则复制一个新文件,便可解决。 或者从新添加replication 进程:
add replication initfj,specialrun
9 2245
场景: 经过fromfile 方式初始化数据。 此错误,大部分是因为没法正常处理数据。好比没法处理空值,好比实际值大于字符容许最大长度等。 处理此错误,必定要有discard 记录。该记录中记录了最明确的问题点。
9.1 示例1: OGG 没法处理空值
日志报错
2019-07-11T23:54:06.496+0800 WARNING OGG-01431 Oracle GoldenGate Delivery for MySQL, gjxm.prm: Aborted grouped transaction on uqs.ins_off_ins_prod_rel, Mapping error. 2019-07-11T23:54:06.506+0800 WARNING OGG-01003 Oracle GoldenGate Delivery for MySQL, gjxm.prm: Repositioning to rba 324447170 in seqno 2. 2019-07-11T23:54:06.656+0800 WARNING OGG-01151 Oracle GoldenGate Delivery for MySQL, gjxm.prm: Error mapping from BOSS.GJ_INS_OFF_INS_PROD_REL to uqs.ins_off_ins_prod_rel. 2019-07-11T23:54:06.690+0800 ERROR OGG-01296 Oracle GoldenGate Delivery for MySQL, gjxm.prm: Error mapping from BOSS.GJ_INS_OFF_INS_PROD_REL to uqs.ins_off_ins_prod_rel.
discard信息
Oracle GoldenGate Delivery for MySQL process started, discard file opened: 2019-07-11 14:17:38.924345 Mapping error to target column: PROD_SPEC_ID Mapping error to target column: PROD_SPEC_ID Current time: 2019-07-11 14:17:49 Discarded record from action ABEND on error 0 .............. PROD_SPEC_ID = 000000: 20 | | .......... 2019-07-11 11:20:25 WARNING OGG-01431 Aborted grouped transaction on uqs.ins_off_ins_prod_rel, Mapping error. ........ 2019-07-11 11:20:25 ERROR OGG-02245 Repositioning was attempted as REPERROR action, but is not supported by RMTTASK.
从以上报错来看应该是OGG 不能处理数据。
- 对比数据类型 从discard 报错信息来看, prod_spec_id 字段为空。没有实际值。对比源端与目标端的字段类型:
- 源端
-
PROD_SPEC_ID CHAR(1)
- 目标端
-
| prod_spec_id | bigint(20) | YES | | 0 |
查看源端数据
SQL> select count(distinct PROD_SPEC_ID) from test_; COUNT(DISTINCTPROD_SPEC_ID) --------------------------- 1 SQL> select replace(prod_spec_id,' ',1) from test_ where rownum=1; R - 1
从查看结果来看,该字段只有一个值,值为一个空格。看来结论已经有了: OGG 没法将空格转换为数值类型
9.2 示例2: 没法处理超长数据
ggserr.log 提示信息
2019-07-17T04:59:54.242+0800 WARNING OGG-01431 Oracle GoldenGate Delivery for MySQL: Aborted grouped transaction on test.test, Mapping error. 2019-07-17T04:59:54.251+0800 ERROR OGG-02245 Oracle GoldenGate Delivery for MySQL: Repositioning was attempted as REPERROR action, but is not supported by RMTTASK. 2019-07-17T04:59:59.254+0800 ERROR OGG-01668 Oracle GoldenGate Delivery for MySQL: PROCESS ABENDING.
discard信息
Oracle GoldenGate Delivery for MySQL process started, group GJFJ8 discard file opened: 2019-07-17 04:58:20.204905 Mapping error to target column: REPLACE Current time: 2019-07-17 04:59:54 ......... REPLACE = 173449918020032271 000000: 31 37 33 34 34 39 39 31 38 30 32 30 30 33 32 32 |1734499180200322| 000010: 37 31 |71 | ......
查看源表信息
SQL> select max(length(replace)) from test.test; MAX(LENGTH(REPLACE)) -------------------- 18
查看目标表信息
+---------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +---------------+--------------+------+-----+---------+----------------+ .......... | replace | smallint(6) | YES | | 0 | | ........
从以上对比来看,能够明确信息: replace 字段的实际值最大长度为18,而表中容许的最大长度为6. 目标表没法存储对应数据。
9.3 解决
更改源数据,使其符合目标表的长度,或者修改目标表,使其拥有足够长度存储数据。
update test_ set prod_spec_id=1;