【问题标题】:Creation Failed: Key column 'name' doesn't exist in table:创建失败:表中不存在键列“名称”:
【发布时间】:2014-03-27 01:22:24
【问题描述】:

我正在尝试使用其他表中主键的外键创建一系列表,但是我总是收到错误

Table Creation Failed: Key column 'PACId' doesn't exist in table:

这是它出现的第一个案例:

CREATE TABLE PlantAreaCodes(
  PACId INT NOT NULL AUTO_INCREMENT,
  AreaCode INT,
  AreaName CHAR(32),
  Comments TEXT,
  PRIMARY KEY (PACId)
);

CREATE TABLE MajorEquipment(
  MEId INT NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (MEId),
  FOREIGN KEY (PACId) 
  REFERENCES PlantAreaCodes(PACId)
);

是和外键的语法有关,还是因为PACId还是空的,不能是?

【问题讨论】:

    标签: mysql sql foreign-keys primary-key notnull


    【解决方案1】:

    PACId 并不是。你还没有在MajorEquipment 中声明它。

    尝试对第二个表使用此定义:

    CREATE TABLE MajorEquipment(
      MEId INT NOT NULL AUTO_INCREMENT,
      PACId INT, -- Added this column
      PRIMARY KEY (MEId),
      FOREIGN KEY (PACId) 
      REFERENCES PlantAreaCodes(PACId)
    );
    

    Here 是一个 SQL Fiddle。

    【讨论】:

    • 谢谢,我没有意识到这一点。过于专注于问题而看不到解决方案。
    【解决方案2】:

    试试这个

    CREATE TABLE MajorEquipment(
      MEId INT NOT NULL AUTO_INCREMENT,
      PRIMARY KEY (MEId),
      PACId INT 
      REFERENCES PlantAreaCodes(PACId)
    )
    

    【讨论】:

    • FWIW,MySQL 不支持列级约束语法。
    • MySQL 不报告错误,但不创建约束。运行SHOW CREATE TABLE MajorEquipment,你会看到。
    猜你喜欢
    • 2022-11-15
    • 2016-02-18
    • 1970-01-01
    • 1970-01-01
    • 2018-03-06
    • 2013-05-09
    • 2016-12-26
    • 2012-12-20
    • 2022-08-14
    相关资源
    最近更新 更多