【问题标题】:MySQL 8 NULL foreign keyMySQL 8 NULL 外键
【发布时间】:2018-10-31 17:34:42
【问题描述】:

我正在创建一些新表,我想用数据填充它们以进行测试,我在 mysql 8 中遇到了这个问题。

我一直在桌子上使用 null FK,但现在我不知道发生了什么。

我认为是 mysql 8 的东西,我最近更新了,直到现在我都没有遇到问题。

我使用的是 8.0.12。

我得到的错误是:

[23000][1452] 无法添加或更新子行:外键 约束失败(i2cwac_test.site_board_pins, CONSTRAINT site_board_pins_sensor_types_id_fk 外键 (id) 参考 sensor_types (id))

建表脚本:

CREATE TABLE site_board_pins
(
    id bigint(20) PRIMARY KEY NOT NULL AUTO_INCREMENT,
    site_board_id bigint(20) NOT NULL,
    e_board_pin_id bigint(20) NOT NULL,
    pin_type_id bigint(20) NOT NULL,
    pin_operation_mode bigint(20) NULL,
    sensor_type_id bigint(20) NULL,
    enabled bit(1) NOT NULL ,
    description varchar(500),
    CONSTRAINT site_board_pins_site_boards_id_fk FOREIGN KEY (id) REFERENCES site_boards (id),
    CONSTRAINT site_board_pins_e_board_pins_id_fk FOREIGN KEY (id) REFERENCES e_board_pins (id),
    CONSTRAINT site_board_pins_pin_types_id_fk FOREIGN KEY (id) REFERENCES pin_types (id),
    CONSTRAINT site_board_pins_pin_operation_mode_id_fk FOREIGN KEY (id) REFERENCES pin_operation_mode (id),
    CONSTRAINT site_board_pins_sensor_types_id_fk FOREIGN KEY (id) REFERENCES sensor_types (id)
);

插入失败:

INSERT INTO `site_board_pins` (`site_board_id`, `e_board_pin_id`, `pin_type_id`, `pin_operation_mode`, `sensor_type_id`, `enabled`)
VALUES
       ((select id from e_boards where name = 'Iboard Pro 1.1'),
        (select ep.id from e_boards eb join e_board_pins ep on ep.e_board_id = eb.id where eb.name = 'Iboard Pro 1.1' and ep.name = 'A1'),
        (select id from pin_types where mode = 'Analog'),
        NULL,
        NULL,
        0);

提前致谢

【问题讨论】:

  • 你有什么错误吗?
  • @MadhurBhaiya 我现在添加了,抱歉
  • 看起来你搞砸了你的 FK 定义——所有的 FK 都被声明为 site_board_pins.Id 存在于所有这些其他表中。例如,我很确定您的第一个是CONSTRAINT site_board_pins_site_boards_id_fk FOREIGN KEY (site_board_id) REFERENCES site_boards (id)
  • 谢谢,有趣的是这是从 jetbrains datagrip 生成的 ddl,我不认为会出错,谢谢!
  • 作为答案发布,如果您接受它,那么其他来到这里的人就会知道您的问题已解决。 :)

标签: mysql mysql-8.0


【解决方案1】:

看起来您搞砸了 FK 定义 - 所有 FK 都声明说您的 Id 列存在于所有这些其他表中。

例如,我很确定您的第一个是:

CONSTRAINT site_board_pins_site_boards_id_fk FOREIGN KEY (site_board_id) REFERENCES site_boards (id)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-18
    • 2020-12-22
    • 2021-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-21
    相关资源
    最近更新 更多