I setup a local mysql to get a remote server`s data ,but occasionally we encounter this following error.
first i stop the remote mysql server from writing data ,the dump the whole databse ,change the ini setting,then restart the remote server.
then i start local server and my blocking-bootstrap
from i know ,binlog event are in serial, in theory binlog record the data committed succussfully there should not exist any foreign key constraints problem.
11:32:22.726 [pool-33-thread-1] ERROR o.t.p.c.impl.logging.SLF4jLogWrapper.error 56 c.f.a.r.b.c.SourceEventProcessor - Exception occurred while processing event PreparedStatementCallback; SQL [INSERT INTO medicalrecord.medicalrecordattachment (AttachType,CreateTime,FileName,SmallImgUrl,ReportID,AttachUrl,BigImgUrl,HospitalCode,ReportPath,FileID,UploadTime,ID,AttachSize,PrintStatus,MRIID,HospitalName,ReportStatus,IsValid) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ON DUPLICATE KEY UPDATE AttachType=?,CreateTime=?,FileName=?,SmallImgUrl=?,ReportID=?,AttachUrl=?,BigImgUrl=?,HospitalCode=?,ReportPath=?,FileID=?,UploadTime=?,AttachSize=?,PrintStatus=?,MRIID=?,HospitalName=?,ReportStatus=?,IsValid=?]; Cannot add or update a child row: a foreign key constraint fails (`medicalrecord`.`medicalrecordattachment`, CONSTRAINT `FK_Reference_5` FOREIGN KEY (`MRIID`) REFERENCES `medicalrecordinfo` (`ID`)); nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Cannot add or update a child row: a foreign key constraint fails (`medicalrecord`.`medicalrecordattachment`, CONSTRAINT `FK_Reference_5` FOREIGN KEY (`MRIID`) REFERENCES `medicalrecordinfo` (`ID`))
org.springframework.dao.DataIntegrityViolationException: PreparedStatementCallback; SQL [INSERT INTO medicalrecord.medicalrecordattachment (AttachType,CreateTime,FileName,SmallImgUrl,ReportID,AttachUrl,BigImgUrl,HospitalCode,ReportPath,FileID,UploadTime,ID,AttachSize,PrintStatus,MRIID,HospitalName,ReportStatus,IsValid) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ON DUPLICATE KEY UPDATE AttachType=?,CreateTime=?,FileName=?,SmallImgUrl=?,ReportID=?,AttachUrl=?,BigImgUrl=?,HospitalCode=?,ReportPath=?,FileID=?,UploadTime=?,AttachSize=?,PrintStatus=?,MRIID=?,HospitalName=?,ReportStatus=?,IsValid=?]; Cannot add or update a child row: a foreign key constraint fails (`medicalrecord`.`medicalrecordattachment`, CONSTRAINT `FK_Reference_5` FOREIGN KEY (`MRIID`) REFERENCES `medicalrecordinfo` (`ID`)); nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Cannot add or update a child row: a foreign key constraint fails (`medicalrecord`.`medicalrecordattachment`, CONSTRAINT `FK_Reference_5` FOREIGN KEY (`MRIID`) REFERENCES `medicalrecordinfo` (`ID`))
at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:249) ~[spring-jdbc-3.2.5.RELEASE.jar:3.2.5.RELEASE]
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72) ~[spring-jdbc-3.2.5.RELEASE.jar:3.2.5.RELEASE]
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:605) ~[spring-jdbc-3.2.5.RELEASE.jar:3.2.5.RELEASE]
at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:818) ~[spring-jdbc-3.2.5.RELEASE.jar:3.2.5.RELEASE]
at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:840) ~[spring-jdbc-3.2.5.RELEASE.jar:3.2.5.RELEASE]
at org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.update(NamedParameterJdbcTemplate.java:281) ~[spring-jdbc-3.2.5.RELEASE.jar:3.2.5.RELEASE]
at org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.update(NamedParameterJdbcTemplate.java:285) ~[spring-jdbc-3.2.5.RELEASE.jar:3.2.5.RELEASE]
at com.flipkart.aesop.mysqldatalayer.upsert.MySQLUpsertDataLayer.upsert(MySQLUpsertDataLayer.java:58) ~[data-layer-mysql-1.2.1-SNAPSHOT.jar:na]
at com.flipkart.aesop.destinationoperation.UpsertDestinationStoreProcessor.processDestinationEvent(UpsertDestinationStoreProcessor.java:35) ~[client-event-consumer-1.2.1-SNAPSHOT.jar:na]
at com.flipkart.aesop.eventconsumer.implementation.DefaultEventConsumerImpl.processSourceEvent(DefaultEventConsumerImpl.java:141) ~[client-event-consumer-1.2.1-SNAPSHOT.jar:na]
at com.flipkart.aesop.runtime.bootstrap.consumer.SourceEventProcessor.process(SourceEventProcessor.java:53) [runtime-blocking-bootstrap-1.2.1-SNAPSHOT.jar:na]
at com.flipkart.aesop.runtime.bootstrap.consumer.SourceEventProcessor.run(SourceEventProcessor.java:48) [runtime-blocking-bootstrap-1.2.1-SNAPSHOT.jar:na]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_51]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_51]
at java.lang.Thread.run(Thread.java:745) [na:1.8.0_51]
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Cannot add or update a child row: a foreign key constraint fails (`medicalrecord`.`medicalrecordattachment`, CONSTRAINT `FK_Reference_5` FOREIGN KEY (`MRIID`) REFERENCES `medicalrecordinfo` (`ID`))
at sun.reflect.GeneratedConstructorAccessor31.newInstance(Unknown Source) ~[na:na]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.8.0_51]
at java.lang.reflect.Constructor.newInstance(Constructor.java:422) ~[na:1.8.0_51]
at com.mysql.jdbc.Util.handleNewInstance(Util.java:389) ~[mysql-connector-java-5.1.35.jar:5.1.35]
at com.mysql.jdbc.Util.getInstance(Util.java:372) ~[mysql-connector-java-5.1.35.jar:5.1.35]
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:973) ~[mysql-connector-java-5.1.35.jar:5.1.35]
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3835) ~[mysql-connector-java-5.1.35.jar:5.1.35]
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3771) ~[mysql-connector-java-5.1.35.jar:5.1.35]
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2435) ~[mysql-connector-java-5.1.35.jar:5.1.35]
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2582) ~[mysql-connector-java-5.1.35.jar:5.1.35]
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2535) ~[mysql-connector-java-5.1.35.jar:5.1.35]
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1911) ~[mysql-connector-java-5.1.35.jar:5.1.35]
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2145) ~[mysql-connector-java-5.1.35.jar:5.1.35]
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2081) ~[mysql-connector-java-5.1.35.jar:5.1.35]
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2066) ~[mysql-connector-java-5.1.35.jar:5.1.35]
at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeUpdate(NewProxyPreparedStatement.java:105) ~[c3p0-0.9.1.jar:0.9.1]
at org.springframework.jdbc.core.JdbcTemplate$2.doInPreparedStatement(JdbcTemplate.java:824) ~[spring-jdbc-3.2.5.RELEASE.jar:3.2.5.RELEASE]
at org.springframework.jdbc.core.JdbcTemplate$2.doInPreparedStatement(JdbcTemplate.java:818) ~[spring-jdbc-3.2.5.RELEASE.jar:3.2.5.RELEASE]
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:589) ~[spring-jdbc-3.2.5.RELEASE.jar:3.2.5.RELEASE]
... 12 common frames omitted