Внешний ключ MySQL 8 NULL - PullRequest
       8

Внешний ключ MySQL 8 NULL

0 голосов
/ 31 октября 2018

Я создаю несколько новых таблиц и хочу заполнить их данными для тестов, и я попал в эту проблему с mysql 8.

Я всегда работал с нулевым 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);

Заранее спасибо

1 Ответ

0 голосов
/ 01 ноября 2018

Похоже, вы испортили свои определения FK - все FK объявлены, говорят, что ваш столбец Id существует во всех этих других таблицах.

Например, я уверен, что ваш первый должен быть:

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

...