powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / создать FOREIGN KEY если еще не создан PRIMARY KEY (error 1215)
4 сообщений из 4, страница 1 из 1
создать FOREIGN KEY если еще не создан PRIMARY KEY (error 1215)
    #38756461
VITAL105
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
Из мануала понял, что нужно сначала создать таблицу с первичным ключом, а уже потом можно со внешним. Иначе mysql не даст.
Но как быть если и в одной и в другой таблице есть первичные и внешние ключи (ссылаются друг на друга).
При создании таблиц phones и clients выдает error 1215 (HY000): Cannot add foreign key constraint

Код: sql
1.
2.
3.
4.
5.
6.
7.
CREATE TABLE client_status
(
	id TINYINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'Номер статуса',
	CONSTRAINT pk_clientStatus_id PRIMARY KEY (id),
	name VARCHAR(20) NOT NULL COMMENT 'Название статуса',
	notes TEXT COMMENT 'Комментарии'
) COMMENT 'Статус клиента';



Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE TABLE phones
(
	id MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'Порядковый номер',
	CONSTRAINT pk_phones_id PRIMARY KEY (id),
		-- Внешний ключ для клиента
		client_id SMALLINT UNSIGNED COMMENT 'Клиент',
		INDEX ix_phones_client_id (client_id),
		CONSTRAINT fk_phones_client_id FOREIGN KEY (client_id) REFERENCES clients(id),  // <- тут ссылается на clients
	phone CHAR(10) NOT NULL DEFAULT '0' COMMENT 'Телефон'
) COMMENT 'Телефоны клиентов';



Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
CREATE TABLE clients
(
	id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'Номер клиента',
	CONSTRAINT pk_clients_id PRIMARY KEY (id),
	name VARCHAR(60) NOT NULL DEFAULT 'НЕТ',
	INDEX ix_clients_name (name),
		-- Внешний ключ для телефона
		phone_id MEDIUMINT UNSIGNED COMMENT 'Телефон',
		INDEX ix_clients_phone_id (phone_id),
		CONSTRAINT fk_clients_phone_id FOREIGN KEY (phone_id) REFERENCES phones(id),       // <- тут ссылается на phones
		-- Внешний ключ для статуса клиента
		client_supplier_status_id TINYINT UNSIGNED NOT NULL COMMENT 'Статус клиента',
		INDEX ix_clients_clientSupplierStatus_id (client_supplier_status_id),
		CONSTRAINT fk_clients_clientSupplierStatus_id FOREIGN KEY (client_supplier_status_id) REFERENCES client_supplier_status(id),
	notes TEXT COMMENT 'Комментарии'
) COMMENT 'Список клиентов';
...
Рейтинг: 0 / 0
создать FOREIGN KEY если еще не создан PRIMARY KEY (error 1215)
    #38756472
VITAL105
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ошибку осознал. В таблице clients поле phone_id не нужно.
...
Рейтинг: 0 / 0
создать FOREIGN KEY если еще не создан PRIMARY KEY (error 1215)
    #38756528
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VITAL105,

ALTER TABLE XXX add constraint FK_yyyy_in_xxx foreign key (yyy) references YYY;

и это всё ПОСЛЕ создания ВСЕХ таблиц.
...
Рейтинг: 0 / 0
создать FOREIGN KEY если еще не создан PRIMARY KEY (error 1215)
    #38759798
VITAL105
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv,

Спасибо за полезный совет не знал.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / создать FOREIGN KEY если еще не создан PRIMARY KEY (error 1215)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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