powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Ошибка при создании foreign key
2 сообщений из 2, страница 1 из 1
Ошибка при создании foreign key
    #33431468
dima.exe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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 — результат та же ошибка.
...
Рейтинг: 0 / 0
Ошибка при создании foreign key
    #33432009
Marat_L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Убери ON DELETE SET NULL в определении внешних ключей - заработает.

Или если оно надо можешь оставить.
Но тогда убери NOT NULL в определении самих полей.

А то нехорошо получается: ненулевое по-определению поле должно стать нулёвым при удалении родительской записи.



Жизнь коротка - потерпи немного :)
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Ошибка при создании foreign key
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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