MyIsam에서 Java 웹 응용 프로그램의 DB 엔진을 innoDB로 변경했습니다. MySql DB를 사용하고 있습니다. 몇 가지 이유로 나는 배치를 통해 추가되는 db 테이블 생성시 오류가 발생합니다.MyIsam에서 innoDB로 DB 엔진을 변경할 때 오류가 발생했습니다.
오류는 java.sql.BatchUpdateException
입니다.
두 DB 엔진 간의 변경이 의미하는 바는 무엇이며 어떻게 수정 했습니까?
편집
전체 스택 추적 :
java.sql.SQLException: Can't create table 'schedule.course2user' (errno: 150)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1075)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3562)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3494)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1960)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2114)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2690)
at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1648)
at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1567)
at database.DBCreator.execList(DBCreator.java:203)
at database.DBCreator.createDatabase(DBCreator.java:215)
at database.DBCreator.main(DBCreator.java:248)
의 MyISAM과 InnoDB의 작업을하지만, 근무되지 않은 DB 명령을 :
CREATE TABLE IF NOT EXISTS `schedule`.`course` (
`id` INT NOT NULL AUTO_INCREMENT ,
`name` VARCHAR(45) NOT NULL UNIQUE,
`description` BLOB ,
`credits` TINYINT(1) DEFAULT '0' ,
`capacity` INT DEFAULT '0' ,
`isRemoved` TINYINT(1) NULL DEFAULT '0' ,
`groupId` INT NULL DEFAULT '0' ,
`creatorId` INT UNSIGNED NOT NULL ,
PRIMARY KEY (`id`) ,
INDEX `fk_creator` (`creatorId` ASC) ,
CONSTRAINT `fk_creator` FOREIGN KEY (`creatorId`)REFERENCES `schedule`.`course` (`id`) ON DELETE CASCADE ON UPDATE NO ACTION)
ENGINE = innoDB DEFAULT CHARACTER SET = utf8;
전체 스택 추적을 제공해야합니다. –
테이블 정의가 보이지 않으면 무엇이 잘못되었는지 알 수 없습니다. – OrangeDog
@OrangeDog 업데이트했습니다. – Nayish