java - 无法创建表 'basque30.newreferral'(错误号 : 150)

标签 java mysql sql jdbc

首先感谢您的帮助和支持的话。 因为我是通过网络学习 MySQL,所以我知道我会犯很多错误,在此先感谢您的耐心和理解。

我正在制作基于 Java 的项目,然后创建 MySQL 数据库和表。 大体上一切顺利,直到我遇到了这个问题。到目前为止,它让我最头疼。我看了很多关于错误150的文章。我看过error 150 on MySQL site并且我认为我已经满足了出现错误 150 的十个原因。

我正在调用的调用是创建每个表。以下是一些涵盖我遇到的问题的表格。

这是工作日历表

    private String workCalandar = "CREATE TABLE WorkCalendar ("
        + "WorkCalendarIdNo INT(64) NOT NULL AUTO_INCREMENT,"
        + "WorkCalendarDate Date,"
        + "WorkCalendarDayCount INT(64),"
        + "WorkDayTypeIdNo INT(64),"
        + "PRIMARY KEY(WorkCalendarIdNo),"
        + "FOREIGN KEY(WorkDayTypeIdNo) REFERENCES WorkDayType(WorkDayTypeIdNo)"
        + ")";

这是部门表

    private String department = "CREATE TABLE Department ("
        + "DeptIdNo INT(64) NOT NULL AUTO_INCREMENT,"
        + "DeptName VARCHAR(25),"
        + "PRIMARY KEY(DeptIdNo)"
        + ")";

这是专家表

    private String specialist = "CREATE TABLE Specialist ("
        + "SpecIdNo INT(64) NOT NULL AUTO_INCREMENT,"
        + "PrefixIdNo INT(64),"
        + "SpecFirstName VARCHAR(30),"
        + "SpecSurname VARCHAR(35),"
        + "SpecDisplayName VARCHAR(72),"
        + "DeptIdNo INT(64),"
        + "PRIMARY KEY(SpecIdNo),"
        + "FOREIGN KEY(PrefixIdNo) REFERENCES Prefix(PrefixIdNo),"
        + "FOREIGN KEY(DeptIdNo) REFERENCES Department(DeptIdNo)"
        + ")";

这是新推荐表

    private String newReferral = "CREATE TABLE NewReferral("
        + "NewReferralIdNo INT(64) NOT NULL AUTO_INCREMENT,"
        + "PatientNumber VARCHAR(12),"
        + "NewReferralDate Date,"
        + "DeptIdNo INT(64),"
        + "SpecIdNo INT(64),"
        + "NewReferralMatched BOOLEAN,"
        + "WorkCalendarIdNo INT(64),"
        + "PRIMARY KEY(NewReferralIdNo),"
        + "FOREIGN KEY(DeptIdNo) REFERENCES Department(DeptIdNo),"
        + "FOREIGN KEY(SpecIdNo) REFERENCES Specialist(SpecIdNo),"
        + "FOREIGN KEY(WorkCalendarIdNo) REFERENCES WorkCalendar(WorkCalendarIdNo)"
        + ")";

错误是 Can't create table 'basque30.newreferral' (errno: 150)

我已将错误追踪到以下行

    + "FOREIGN KEY(SpecIdNo) REFERENCES Specialist(SpecIdNo),"

谁能指出我方法的错误并建议我如何解决。

最佳答案

确保引用的表已经存在。

关于java - 无法创建表 'basque30.newreferral'(错误号 : 150),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19460475/

相关文章:

java - 按上次编辑时间读取文件夹内的所有 .txt 文件

java - 使用 Jenkinsfile 和 maven 对 pullRequest 的代码启动声纳分析

java - 了解递归阶乘中的 Java 行为

mysql同时选择和更新

mysql - 按mysql中重命名的列过滤

sql - MySQL。使用整数数据区间

mysql - 将多行插入具有 super /子类型的 MySQL 表中

java - Apache Derby + jpa

php - 将 MySQL 结果转换为简单数组的最佳方法是什么?

Python 警告 : Truncated incorrect DOUBLE value