Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何解决这个问题;无法添加或更新子行:外键约束失败;在爪哇_Java_Mysql - Fatal编程技术网

Java 如何解决这个问题;无法添加或更新子行:外键约束失败;在爪哇

Java 如何解决这个问题;无法添加或更新子行:外键约束失败;在爪哇,java,mysql,Java,Mysql,我在数据库中有一个名为“EventUserRelation”的表,它有一个primery键(EventUserId)和两个外键(EventId和TestUserId)。当我尝试在“EventUserRelation”表中添加或更新详细信息时,我得到的结果是“无法添加或更新子行:外键约束失败”。如何修复此错误请帮助我 AddEventUserRelationMapping和updateEventUserRelationList方法如下所示 public int addEventUserRealt

我在数据库中有一个名为“EventUserRelation”的表,它有一个primery键(EventUserId)和两个外键(EventId和TestUserId)。当我尝试在“EventUserRelation”表中添加或更新详细信息时,我得到的结果是“无法添加或更新子行:外键约束失败”。如何修复此错误请帮助我

AddEventUserRelationMapping和updateEventUserRelationList方法如下所示

 public int addEventUserRealtionMapping(ArrayList<UserBO> userBOs, long eventId) throws UserServiceException {
        List<EventUserRelationDO> totalAddedCount;
        ArrayList<UserDO> userDOs = new ArrayList<>();
        try {
            for (UserBO userBO : userBOs) {
                UserDO userDO = mapper.mapUserBOToDO(userBO, new UserDO());
                userDOs.add(userDO);
            }
            totalAddedCount = eventDAOImpl.addEventUserRelationMapping(userDOs, eventId);
            EventBO eventBO = getEventByEventId(eventId);
            MessageBO messageBO = new MessageBO();
            messageBO.setEventId(eventBO.getEventId());
            messageBO.setEventTitle(eventBO.getText());
            messageBO.setMessage(eventBO.getText());
            messageBO.setTestUserId(eventBO.getTestUserId());
            messageBO.setMessageType(IRingeeConstants.MESSAGE_TYPE_INVITATION);

            if (totalAddedCount.size() == userDOs.size()) {
                manageMessageService.sendMessageToGroup(userBOs, messageBO);
            }
        } catch (UserDataException dExp) {
            throw new UserServiceException(" exception while adding user relationship for eventId " + eventId, dExp);
        }
        return totalAddedCount.size();
    }

public void updateEventUserRelationList(EventBO eventBO, long eventId) throws UserServiceException {
        List<EventUserRelationDO> eventUserRelationDOs = mapper.mapEventUserRelationBOToDO(eventBO.getEventUserRelationBOs(), new ArrayList<EventUserRelationDO>());
        try {

            for (EventUserRelationDO eventUserRelationDO : eventUserRelationDOs) {

                eventDAOImpl.updateEventUserRelationMap(eventUserRelationDO, eventId);
            }

        } catch (UserDataException dExp) {
            throw new UserServiceException(" exception while update event user relation for event user id="+eventBO.getEventId(), dExp);
        }

    }

您试图更新的
test\u user.test\u user\u ID
中是否存在
test\u user\u ID
中的条目?我有一个“testuser”表,因为我有一个ID,它是该表的主要键。
public void addEventUserRealtionMapping() {
        ArrayList<UserBO> userBOs = new ArrayList<>();
        EventBO eventBO = getEventBO();
        UserBO userBO = getUserBO();
        userBOs.add(getUserBO1());

        try {
            manageUserServiceImpl.addUser(userBO);
            eventBO.setRingeeUserId(userBO.getTestUserId());
            manageEventServiceImpl.addEvent(eventBO);
            int addedTotalCount = manageEventServiceImpl.addEventUserRealtionMapping(userBOs, eventBO.getEventId());
            Assert.assertEquals(userBOs.size(), addedTotalCount);
        } catch (UserServiceException e) {
            e.printStackTrace();
            Assert.fail();
        }

    }

public void testUpdateEventUserRealtionMapping() {
        ArrayList<UserBO> userBOs = new ArrayList<>();
        EventBO eventBO = getEventBO();
        UserBO userBO = getUserBO();
        userBOs.add(getUserBO1());

            try {
            manageUserServiceImpl.addUser(userBO);
            eventBO.setRingeeUserId(userBO.getTestUserId());
            manageEventServiceImpl.addEvent(eventBO);
            manageEventServiceImpl.addEventUserRealtionMapping(userBOs, eventBO.getEventId());
            manageEventServiceImpl.updateEvent(eventBO);

            try {

                manageEventServiceImpl.updateEventUserRelationList(eventBO, eventBO.getEventId());
            } catch (UserServiceException e) {

                e.printStackTrace();
            }
            System.out.println("EVENT USER RELATION UPDATED SUCCESSFULLY");

        } catch (UserServiceException e) {
            e.printStackTrace();

        }
    }
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Cannot add or update a child row: a foreign key constraint fails (`testapp_dev`.`event_user_relation`, CONSTRAINT `FK_EVT_TEST_USER_ID` FOREIGN KEY (`TEST_USER_ID`) REFERENCES `test_user` (`TEST_USER_ID`))
    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:411)
    at com.mysql.jdbc.Util.getInstance(Util.java:386)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1041)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4190)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4122)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2570)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2731)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2818)
    at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2157)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2460)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2377)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2361)
    at org.springframework.jdbc.core.JdbcTemplate$2.doInPreparedStatement(JdbcTemplate.java:916)
    at org.springframework.jdbc.core.JdbcTemplate$2.doInPreparedStatement(JdbcTemplate.java:909)
    at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:644)