java - 如何解决 Cannot add or update a child row : a foreign key constraint fails

标签 java mysql

CREATE TABLE `events` (
  `raceday` date NOT NULL,
  `meeting_number` smallint(6) NOT NULL,
  `event_number` smallint(6) NOT NULL,
 ,`event_number`),
  CONSTRAINT `fk_events_race_meetings` FOREIGN KEY (`raceday`, `meeting_number`) REFERENCES `race_meetings` (`raceday`, `meeting_number`) ON DELETE CASCADE ON UPDATE CASCADE
) 

ENGINE=InnoDB DEFAULT CHARSET=latin1

CREATE TABLE `bet_types` (
  `ao_bet_type` varchar(5) NOT NULL,
  `bet_type` smallint(6) NOT NULL,
  `bet_type_description` varchar(50) DEFAULT NULL,
  `other_bet_type` varchar(5) DEFAULT NULL,
  `number_of_legs` smallint(6) DEFAULT NULL,
  `display_order` smallint(6) DEFAULT NULL,
  PRIMARY KEY (`bet_type`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1


CREATE TABLE `dividends` (
  `raceday` date NOT NULL,
  `meeting_number` smallint(6) NOT NULL,
  `event_number` smallint(6) NOT NULL,
  `bet_type` smallint(6) NOT NULL,
  `dividend_number` smallint(6) NOT NULL,
  `pool_class` smallint(6) DEFAULT NULL,
  `pool_result_type` smallint(6) DEFAULT NULL,
  `dividend_type` smallint(6) DEFAULT NULL,
  `dividend_or_accrual_cents` decimal(10,2) DEFAULT NULL,
  `base_value` smallint(6) DEFAULT NULL,
  `concession_dividend_flag` smallint(6) DEFAULT NULL,
  `number_of_legs` smallint(6) DEFAULT NULL,
  PRIMARY KEY (`raceday`,`meeting_number`,`event_number`,`bet_type`,`dividend_number`),
  KEY `FKA113AE64360F4F38` (`bet_type`),
  CONSTRAINT `FKA113AE64360F4F38` FOREIGN KEY (`bet_type`) REFERENCES `bet_types` (`bet_type`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `fk_dividends_events` FOREIGN KEY (`raceday`, `meeting_number`, `event_number`) REFERENCES `events` (`raceday`, `meeting_number`, `event_number`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1




@Test
     public void testDividend()

     {
         try
         {

           Dividend d = new Dividend();
          d.setEvent(new Event(new Date(),24,7));
          d.setBetType(new BetType(15));
          d.setDividendNumber(5);
    /*  HibernateUtil.saveOrUpdate(d, postgresSession, true);*/
         HibernateUtil.saveOrUpdate(d, mysqlSession, true);
         }
         catch(Exception e)
         {
             e.printStackTrace();
             e.getLocalizedMessage();

         }
     }

I am getting   Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Cannot add or update a child row: a foreign key constraint fails (`ebet`.`dividends`, CONSTRAINT `fk_dividends_events` FOREIGN KEY (`raceday`, `meeting_number`, `event_number`) REFERENCES `events` (`raceday`, `meeting_number`, `event_number`) ON DELETE CASCA)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:409)
    at com.mysql.jdbc.Util.getInstance(Util.java:384)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1039)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4232)

如何解决Cannot add or update a child row: a foreign key constraint fails

最佳答案

此问题的发生主要是由于外键约束。为了避免这种情况,我有一个简单的技巧,就是简单地使用 SET FOREIGN_KEY_CHECKS=0 它将消除外键约束的影响,并在执行后再次使用 SET FOREIGN_KEY_CHECKS=1 继续相同。

关于java - 如何解决 Cannot add or update a child row : a foreign key constraint fails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29749326/

相关文章:

java - 在 Java 中如何以及在哪里定义自己的异常层次结构?

java - 如何在微调器中显示选项,选择后将该选项保存为整数变量?

php - 从 MySQL 数据库列中选择最大数字并填充 0?

MySQL连接不同的表

PHP MySQL 获得前五名最高结果。?

java - MySQL datetime NULL 问题, '=' 和 '!=' 返回 0 行

java - 如何配置 Eclipse 以显示断言错误?

java - 以编程方式在垂直 LinearLayout 内添加约束布局?

php - 如何处理两个下拉列表值?

java - 如果稍后要初始化为已知字符串,如何确定将 JLabel 设置为正确的大小