SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 06.06.2016 00:15:59

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Баг или нет?

create table t1(id int not null primary key, b int, key(b), foreign key(id,b) references t1(id)) engine=innodb;
ERROR 1239 (42000): Incorrect foreign key definition for 'foreign key without name': Key reference and table reference don't match

теперь попробуем сделать то же самое в два этапа.

create table t1(id int not null primary key, b int, key(b)) engine=innodb;
Query OK, 0 rows affected (0.22 sec)

alter table t1 add foreign key(id,b) references t1(id);
ERROR 1005 (HY000): Can't create table 'test.#sql-d88_b' (errno: 150)

В данном случае у нас появляется errno 150, которая является ошибкой сишной библиотеки. Получается что ошибка не была отловлена на этапе разбора команды alter, а возвращена обработчиком innodb при попытке выполнить команду.

1. Верны ли мои рассуждения?
2. Является ли это багом? Ведь речь идет об ошибке синтаксиса и логично если бы она была выявлена при парсинге команды.

Выполнено на  5.5.34-MariaDB-log

Неактивен

 

#2 06.06.2016 18:21:25

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Баг или нет?

У меня 5.6.24-72.2 Percona Server и поведение нормальное. Значит бага MariaDB или уже исправленная бага старых версий.

mysql> create table t1(id int not null primary key, b int, key(b), foreign key(id,b) references t1(id)) engine=innodb;
ERROR 1239 (42000): Incorrect foreign key definition for 'foreign key without name': Key reference and table reference don't match

mysql> create table t1(id int not null primary key, b int, key(b)) engine=innodb;
Query OK, 0 rows affected (0.02 sec)
mysql>  alter table t1 add foreign key(id,b) references t1(id);
ERROR 1239 (42000): Incorrect foreign key definition for 'foreign key without name': Key reference and table reference don't match

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson