powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / InnoDB and FOREIGN KEY
4 сообщений из 4, страница 1 из 1
InnoDB and FOREIGN KEY
    #32462818
TMP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TMP
Гость
Создаю таблицы:
...
CREATE TABLE DP_Stations (Station_ID CHAR(4) PRIMARY KEY, Station_Name CHAR(100), Station_Creation DATE , Station_Category SMALLINT, Station_Position SMALLINT, Station_Description CHAR(255) DEFAULT 'None', Station_Photo CHAR(255) DEFAULT 'None', INDEX(Station_Category), INDEX(Station_Position), FOREIGN KEY(Station_Category) REFERENCES DP_Categories(Category_ID) ON DELETE CASCADE, FOREIGN KEY(Station_Position) REFERENCES DP_Countries(Country_ID) ON DELETE CASCADE) TYPE = InnoDB;
....
CREATE TABLE DP_Measurements (Measurement_Time DATETIME NOT NULL, Measurement_Station CHAR(4) NOT NULL, Measurements_Tour INT, Measurement_Antenna CHAR(6), Measurement_AntennaSN CHAR(20), Measurement_Receiver CHAR(6), Measurement_ReceiverSN CHAR(20), Antenna_N DOUBLE DEFAULT 0, Antenna_E DOUBLE DEFAULT 0, Antenna_H DOUBLE DEFAULT 0, Measurement_Condition SMALLINT, Measurement_End DATETIME , Measurement_Operator CHAR(4), Measurement_Tour INT, Measurement_Organization SMALLINT, Measurement_Data CHAR(255), Measurement_Translation TINYINT, PRIMARY KEY(Measurement_Time,Measurement_Station), INDEX(Measurement_Antenna), INDEX(Measurement_Receiver), INDEX(Measurement_Condition), INDEX(Measurement_Operator), INDEX(Measurement_Organization), FOREIGN KEY(Measurement_Station) REFERENCES DP_Stations(Station_ID) ON DELETE CASCADE) TYPE = InnoDB;

получаю ошибку 150 проблемма с FOREIGN KEY

хотя создание другой таблицы проходит нормально:

CREATE TABLE DP_Continue (Continue_Station CHAR(4) PRIMARY KEY, Continue_Operator CHAR(4), Continue_Antenna CHAR(6), Continue_AntennaSN CHAR(20), Continue_Receiver CHAR(6), Continue_ReceiverSN CHAR(20), Antenna_N DOUBLE DEFAULT 0, Antenna_E DOUBLE DEFAULT 0, Antenna_H DOUBLE DEFAULT 0, Continue_Position_N CHAR(15), Continue_Position_E CHAR(15), Continue_Position_H CHAR(15), INDEX(Continue_Operator), INDEX(Continue_Antenna), INDEX(Continue_Receiver), FOREIGN KEY(Continue_Station) REFERENCES DP_Stations(Station_ID) ON DELETE CASCADE, FOREIGN KEY(Continue_Operator) REFERENCES DP_Operators(Operator_ID) ON DELETE CASCADE, FOREIGN KEY(Continue_Antenna) REFERENCES DP_Antennas(Antenna_ID) ON DELETE CASCADE, FOREIGN KEY(Continue_Receiver) REFERENCES DP_Receivers(Receiver_ID) ON DELETE CASCADE) TYPE = InnoDB;

Почему возникает ошибка?
...
Рейтинг: 0 / 0
InnoDB and FOREIGN KEY
    #32462858
Marat_L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>PRIMARY KEY(Measurement_Time,Measurement_Station),
>FOREIGN KEY(Measurement_Station) REFERENCES DP_Stations(Station_ID) ON

Для внешнего ключа надо создать отдельный индекс для Measurement_Station

Жизнь коротка - потерпи немного :)
...
Рейтинг: 0 / 0
InnoDB and FOREIGN KEY
    #32462860
Фотография Хрен
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В документации это описано.. Для создания foreign keys innodb требует чтобы были уже созданы индексы в обоих таблицах по тем полям которые используются в FK..
У вас Measurement_Station вне индекса. добавьте index (Measurement_Station) и все должно заработать.
...
Рейтинг: 0 / 0
InnoDB and FOREIGN KEY
    #32462901
TMP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TMP
Гость
Большое спасибо за помощь!
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / InnoDB and FOREIGN KEY
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]