|
InnoDB and FOREIGN KEY
|
|||
---|---|---|---|
#18+
Создаю таблицы: ... 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; Почему возникает ошибка? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2004, 18:33 |
|
InnoDB and FOREIGN KEY
|
|||
---|---|---|---|
#18+
>PRIMARY KEY(Measurement_Time,Measurement_Station), >FOREIGN KEY(Measurement_Station) REFERENCES DP_Stations(Station_ID) ON Для внешнего ключа надо создать отдельный индекс для Measurement_Station Жизнь коротка - потерпи немного :) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2004, 19:06 |
|
InnoDB and FOREIGN KEY
|
|||
---|---|---|---|
#18+
В документации это описано.. Для создания foreign keys innodb требует чтобы были уже созданы индексы в обоих таблицах по тем полям которые используются в FK.. У вас Measurement_Station вне индекса. добавьте index (Measurement_Station) и все должно заработать. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2004, 19:09 |
|
|
start [/forum/topic.php?fid=47&fpage=689&tid=1855294]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
29ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 131ms |
0 / 0 |