|
|
|
Ошибка при создании foreign key
|
|||
|---|---|---|---|
|
#18+
MySQL 4.1.8 Вот такой запрос [sql] DROP TABLE IF EXISTS `db_objtype`; CREATE TABLE `db_objtype` ( `id` INTEGER NOT NULL AUTO_INCREMENT COMMENT 'Primary Key', `type` SET('c','l') NOT NULL COMMENT 'Type ([c]ommerce, [l]iving)', `name` VARCHAR(128) NOT NULL COMMENT 'Display Name', PRIMARY KEY (`id`) )TYPE=InnoDB; DROP TABLE IF EXISTS `db_area`; CREATE TABLE `db_area` ( `id` INTEGER NOT NULL AUTO_INCREMENT COMMENT 'Primary Key', `area` VARCHAR (255) NOT NULL COMMENT 'Display Area', PRIMARY KEY (`id`) )TYPE=InnoDB; DROP TABLE IF EXISTS `db_housetype`; CREATE TABLE `db_housetype` ( `id` INTEGER NOT NULL AUTO_INCREMENT COMMENT 'Primary Key', `type` VARCHAR (255) NOT NULL COMMENT 'Display Type', PRIMARY KEY (`id`) )TYPE=InnoDB; DROP TABLE IF EXISTS `db_houseplan`; CREATE TABLE `db_houseplan` ( `id` INTEGER NOT NULL AUTO_INCREMENT COMMENT 'Primary Key', `plan` VARCHAR (255) NOT NULL COMMENT 'Display Planing', PRIMARY KEY (`id`) )TYPE=InnoDB; DROP TABLE IF EXISTS `db_balcon`; CREATE TABLE `db_balcon` ( `id` INTEGER NOT NULL AUTO_INCREMENT COMMENT 'Primary Key', `balcon` VARCHAR (255) NOT NULL COMMENT 'Display Balcon', PRIMARY KEY (`id`) )TYPE=InnoDB; DROP TABLE IF EXISTS `db_sanuz`; CREATE TABLE `db_sanuz` ( `id` INTEGER NOT NULL AUTO_INCREMENT COMMENT 'Primary Key', `sanuz` VARCHAR (255) NOT NULL COMMENT 'Display SanUz', PRIMARY KEY (`id`) )TYPE=InnoDB; DROP TABLE IF EXISTS `db_status`; CREATE TABLE `db_status` ( `id` INTEGER NOT NULL AUTO_INCREMENT COMMENT 'Primary Key', `sanuz` VARCHAR (255) NOT NULL COMMENT 'Display Status', PRIMARY KEY (`id`) )TYPE=InnoDB; DROP TABLE IF EXISTS `db_item`; CREATE TABLE `db_item` ( `id` INTEGER NOT NULL AUTO_INCREMENT COMMENT 'Primary Key', `opcode` INTEGER NOT NULL COMMENT 'Operation code (0:Sale, 1:Bay 2:Lease 3:Renting 4:Change)', `region` INTEGER NOT NULL COMMENT 'Region (0:Murmansk 1:Region 2:Other)', `objtype` INTEGER NOT NULL COMMENT 'Object type (Ref:db_objtype)', `area` INTEGER NOT NULL COMMENT 'Area (Ref:db_area)', `sity` VARCHAR(128) DEFAULT NULL COMMENT 'Sity (if region eq 1 or 2)', `street` VARCHAR(255) NOT NULL COMMENT 'Street', `house` VARCHAR(128) NOT NULL COMMENT 'House', `room` INTEGER NOT NULL COMMENT 'Room', `aroom` INTEGER NOT NULL COMMENT 'All Rooms', `floor` INTEGER NOT NULL COMMENT 'Floor', `afloor` INTEGER NOT NULL COMMENT 'All Floors', `aspace` INTEGER NOT NULL COMMENT 'All space', `lspace` INTEGER NOT NULL COMMENT 'Living space', `kspace` INTEGER NOT NULL COMMENT 'Kitchen space', `housetype` INTEGER NOT NULL COMMENT 'House type (Ref:db_housetype)', `houseplan` INTEGER NOT NULL COMMENT 'House planing (Ref:db_houseplan)', `balcon` INTEGER NOT NULL COMMENT 'Balkon (Ref:db_balcon)', `sanuz` INTEGER NOT NULL COMMENT 'SanUz (Ref:db_sanuz)', `status` INTEGER NOT NULL COMMENT 'Status (Ref:db_status)', `price` INTEGER NOT NULL COMMENT 'Price', `phone` VARCHAR(128) NOT NULL COMMENT 'Phone', `correction` INTEGER NOT NULL COMMENT 'Correction date', PRIMARY KEY (`id`), KEY (`opcode`), KEY (`region`), KEY (`objtype`), KEY (`area`), KEY (`sity`), KEY (`street`), KEY (`house`), KEY (`room`), KEY (`aroom`), KEY (`floor`), KEY (`afloor`), KEY (`aspace`), KEY (`lspace`), KEY (`kspace`), KEY (`housetype`), KEY (`houseplan`), KEY (`balcon`), KEY (`sanuz`), KEY (`status`), KEY (`price`), KEY (`correction`), FOREIGN KEY (`objtype`) REFERENCES `db_objtype` (`id`) ON DELETE SET NULL, FOREIGN KEY (`area`) REFERENCES `db_area` (`id`) ON DELETE SET NULL, FOREIGN KEY (`housetype`) REFERENCES `db_housetype` (`id`) ON DELETE SET NULL, FOREIGN KEY (`houseplan`) REFERENCES `db_houseplan` (`id`) ON DELETE SET NULL, FOREIGN KEY (`balcon`) REFERENCES `db_balcon` (`id`) ON DELETE SET NULL, FOREIGN KEY (`sanuz`) REFERENCES `db_sanuz` (`id`) ON DELETE SET NULL, FOREIGN KEY (`status`) REFERENCES `db_status` (`id`) ON DELETE SET NULL )TYPE=InnoDB; [/sql] При выполении MySql ругается: "Can't create table '.\rieltnet\rieltnet_db_item.frm' (errno: 150)" Если убрать из запроса foreign key то все отрабатывает нормально. Если потом попробовать добавить их через AFTER TABLE — результат та же ошибка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2005, 18:12:42 |
|
||
|
Ошибка при создании foreign key
|
|||
|---|---|---|---|
|
#18+
Убери ON DELETE SET NULL в определении внешних ключей - заработает. Или если оно надо можешь оставить. Но тогда убери NOT NULL в определении самих полей. А то нехорошо получается: ненулевое по-определению поле должно стать нулёвым при удалении родительской записи. Жизнь коротка - потерпи немного :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2005, 09:24:57 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=33431468&tid=1853305]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
16ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
25ms |
get tp. blocked users: |
1ms |
| others: | 199ms |
| total: | 272ms |

| 0 / 0 |
