MySQL:java.sql.SQLException:引用列和外键约束中的引用列';回答不正确\u FK01&\x27;不相容

MySQL:java.sql.SQLException:引用列和外键约束中的引用列';回答不正确\u FK01&\x27;不相容,mysql,foreign-keys,constraints,integration-testing,testcontainers,Mysql,Foreign Keys,Constraints,Integration Testing,Testcontainers,我一直在使用MySQL测试容器进行集成测试,最近,它停止了工作,声称我的一个外键出现了问题(而且我不相信自上次运行测试以来,我没有做任何SQL更改,因为它运行良好) 我已经浏览了这里列出的清单(在237张赞成票的回答中),但我似乎找不到解决方案。(完整)错误消息为: Caused by: org.testcontainers.ext.ScriptUtils$ScriptStatementFailedException: Script execution failed (sqlForIntegra

我一直在使用MySQL测试容器进行集成测试,最近,它停止了工作,声称我的一个外键出现了问题(而且我不相信自上次运行测试以来,我没有做任何SQL更改,因为它运行良好)

我已经浏览了这里列出的清单(在237张赞成票的回答中),但我似乎找不到解决方案。(完整)错误消息为:

Caused by: org.testcontainers.ext.ScriptUtils$ScriptStatementFailedException: Script execution failed (sqlForIntegrationTest.sql:18): ALTER TABLE INCORRECT_ANSWER ADD CONSTRAINT INCORRECT_ANSWER_FK01 FOREIGN KEY(QUESTION_SID) REFERENCES QUESTION(QUESTION_SID) ON DELETE CASCADE ON UPDATE CASCADE
Caused by: java.sql.SQLException: Referencing column 'QUESTION_SID' and referenced column 'QUESTION_SID' in foreign key constraint 'INCORRECT_ANSWER_FK01' are incompatible.
用于初始化测试容器的SQL文件为:

CREATE TABLE ASSESSMENT(
    ISBN BIGINT NOT NULL
    , AUTHOR_FIRST_NAME VARCHAR(32)
    , AUTHOR_LAST_NAME VARCHAR(32)
    , TITLE VARCHAR(128) NOT NULL
    , NUMBER_OF_POINTS FLOAT NOT NULL
    , IS_VERIFIED BOOLEAN DEFAULT FALSE
    , READING_LEVEL FLOAT NOT NULL
    , CREATED_TEACHER_ID MEDIUMINT
) ENGINE=INNODB DEFAULT CHARSET=latin1;


CREATE UNIQUE INDEX ASSESSMENT_X01 ON ASSESSMENT(
    ISBN
);

ALTER TABLE ASSESSMENT
    ADD CONSTRAINT ASSESSMENT_PK PRIMARY KEY(
        ISBN
    );

CREATE INDEX ASSESSMENT_X02 ON ASSESSMENT(
    TITLE
);

CREATE INDEX ASSESSMENT_X03 ON ASSESSMENT(
    CREATED_TEACHER_ID
);


CREATE TABLE QUESTION(
    QUESTION_SID BIGINT NOT NULL 
    , ASSESSMENT_ISBN BIGINT NOT NULL
    , QUESTION_TEXT VARCHAR(256) NOT NULL
    , CORRECT_ANSWER VARCHAR(256) NOT NULL
    ) ENGINE=INNODB DEFAULT CHARSET=latin1;

CREATE UNIQUE INDEX QUESTION_X01 ON QUESTION (
    QUESTION_SID
);

ALTER TABLE QUESTION 
    ADD CONSTRAINT QUESTION_PK PRIMARY KEY(
        QUESTION_SID
    );

ALTER TABLE QUESTION MODIFY COLUMN QUESTION_SID INT     AUTO_INCREMENT; 

ALTER TABLE QUESTION AUTO_INCREMENT=1; 


CREATE INDEX QUESTION_X02 ON QUESTION(
    ASSESSMENT_ISBN
);

ALTER TABLE QUESTION 
    ADD CONSTRAINT QUESTION_FK01 FOREIGN KEY(
        ASSESSMENT_ISBN
    ) REFERENCES ASSESSMENT(ISBN)
    ON DELETE CASCADE
    ON UPDATE CASCADE;


CREATE TABLE INCORRECT_ANSWER(
    INCORRECT_ANSWER_SID INT NOT NULL 
    , QUESTION_SID BIGINT NOT NULL
    , TEXT VARCHAR(256)
    ) ENGINE=INNODB DEFAULT CHARSET=latin1;

CREATE UNIQUE INDEX INCORRECT_ANSWER_X01 ON         INCORRECT_ANSWER(
INCORRECT_ANSWER_SID
);

ALTER TABLE INCORRECT_ANSWER
    ADD CONSTRAINT ANSWER_PK PRIMARY KEY(
        INCORRECT_ANSWER_SID
    );

ALTER TABLE INCORRECT_ANSWER MODIFY COLUMN     INCORRECT_ANSWER_SID INT AUTO_INCREMENT;

ALTER TABLE INCORRECT_ANSWER AUTO_INCREMENT=1; 

ALTER TABLE INCORRECT_ANSWER
    ADD CONSTRAINT INCORRECT_ANSWER_FK01 FOREIGN     KEY(QUESTION_SID) REFERENCES QUESTION(QUESTION_SID) 
ON DELETE CASCADE
ON UPDATE CASCADE;  

INSERT INTO ASSESSMENT(ISBN, AUTHOR_FIRST_NAME, AUTHOR_LAST_NAME, TITLE, NUMBER_OF_POINTS, IS_VERIFIED, READING_LEVEL, CREATED_TEACHER_ID) VALUES(9781976530739, 'Herman', 'Melleville', 'Moby Dick', 65, FALSE, 10.8, 1);

ALTER TABLE QUESTION MODIFY COLUMN QUESTION\u SID INT AUTO\u INCREMENT-您应该以bigint的身份离开。

非常感谢您!我理解读者有时会给出一些毫无帮助的快速回答/评论。尽管如此,我们仍然应该称这些反应是有益的;如果读者们决定不帮忙,他们就不会在这里。因此,我对这个问题进行了编辑,试图阻止“快速回答”——介绍可能是投票失败的原因。无论如何,问题最好保持简洁。