Bug #69062 | Foreign Key id modified during export | ||
---|---|---|---|
Submitted: | 25 Apr 2013 8:04 | Modified: | 15 May 2013 16:36 |
Reporter: | Nico Niepraschk | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: InnoDB storage engine | Severity: | S2 (Serious) |
Version: | 5.6.11 | OS: | Any |
Assigned to: | Daniel So | CPU Architecture: | Any |
Tags: | regression |
[25 Apr 2013 8:04]
Nico Niepraschk
[25 Apr 2013 10:19]
MySQL Verification Team
Hello Nico, Thank you for the report. Verified as described. Thanks, Umesh
[25 Apr 2013 10:20]
MySQL Verification Team
How to repeat ================ drop table if exists t2; drop table if exists t1; create table t1(id int not null primary key)engine=innodb; create table t2(id int not null primary key)engine=innodb; ALTER TABLE t2 ADD CONSTRAINT `t2:id` FOREIGN KEY (id) REFERENCES t1(id); show create table t2\G #### mysql> select version(); +------------------+ | version() | +------------------+ | 5.6.10-debug-log | +------------------+ 1 row in set (0.00 sec) mysql> mysql> drop table if exists t2; Query OK, 0 rows affected, 1 warning (0.02 sec) mysql> drop table if exists t1; Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> mysql> create table t1(id int not null primary key)engine=innodb; Query OK, 0 rows affected (0.11 sec) mysql> create table t2(id int not null primary key)engine=innodb; Query OK, 0 rows affected (0.07 sec) mysql> ALTER TABLE t2 ADD CONSTRAINT `t2:id` FOREIGN KEY (id) REFERENCES t1(id); Query OK, 0 rows affected (0.12 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> show create table t2\G *************************** 1. row *************************** Table: t2 Create Table: CREATE TABLE `t2` ( `id` int(11) NOT NULL, PRIMARY KEY (`id`), CONSTRAINT `t2:id` FOREIGN KEY (`id`) REFERENCES `t1` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 1 row in set (0.00 sec) ##### mysql> drop table if exists t2; Query OK, 0 rows affected (0.04 sec) mysql> drop table if exists t1; Query OK, 0 rows affected (0.14 sec) mysql> create table t1(id int not null primary key)engine=innodb; Query OK, 0 rows affected (0.07 sec) mysql> create table t2(id int not null primary key)engine=innodb; Query OK, 0 rows affected (0.08 sec) mysql> mysql> mysql> ALTER TABLE t2 ADD CONSTRAINT `t2.id` FOREIGN KEY (id) REFERENCES t1(id); Query OK, 0 rows affected (0.13 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> show create table t2\G *************************** 1. row *************************** Table: t2 Create Table: CREATE TABLE `t2` ( `id` int(11) NOT NULL, PRIMARY KEY (`id`), CONSTRAINT `t2?id` FOREIGN KEY (`id`) REFERENCES `t1` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 1 row in set (0.00 sec) mysql> select version(); +------------------+ | version() | +------------------+ | 5.6.11-debug-log | +------------------+ 1 row in set (0.00 sec) mysql>
[26 Apr 2013 7:28]
MySQL Verification Team
http://bugs.mysql.com/bug.php?id=69079 marked as duplicate of this one.
[2 May 2013 6:35]
MySQL Verification Team
## 5.5.31 is also affected [root@ushastry mysql-5.5.31]# bin/mysql -u root -p --port=3306 --protocol=TCP test Enter password: Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 Server version: 5.5.31-debug-log Source distribution Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> drop table if exists t2; Query OK, 0 rows affected (0.01 sec) mysql> drop table if exists t1; Query OK, 0 rows affected (0.01 sec) mysql> mysql> create table t1(id int not null primary key)engine=innodb; Query OK, 0 rows affected (0.12 sec) mysql> create table t2(id int not null primary key)engine=innodb; Query OK, 0 rows affected (0.09 sec) mysql> ALTER TABLE t2 ADD CONSTRAINT `t2:id` FOREIGN KEY (id) REFERENCES t1(id); Query OK, 0 rows affected (0.15 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> show create table t2\G *************************** 1. row *************************** Table: t2 Create Table: CREATE TABLE `t2` ( `id` int(11) NOT NULL, PRIMARY KEY (`id`), CONSTRAINT `t2?id` FOREIGN KEY (`id`) REFERENCES `t1` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 1 row in set (0.00 sec)
[2 May 2013 7:08]
MySQL Verification Team
recent regression in 5.1.69, 5.5.31, 5.6.11. I guess this fix for this could have been to blame: Bug #11753153 INNODB GENERATES SYMBOLS THAT ARE TOO LONG, INVALID DDL FROM SHOW CREATE
[2 May 2013 7:26]
MySQL Verification Team
select * from REFERENTIAL_CONSTRAINTS; shows the correct names.
[2 May 2013 7:46]
MySQL Verification Team
the bug is that function dict_print_info_on_foreign_key_in_create_format calls: innobase_convert_from_id(&my_charset_filename, constraint_name, stripped_id, MAX_TABLE_NAME_LEN); Why is it using my_charset_filename and not utf8?
[15 May 2013 16:36]
Daniel So
Added a changelog entry for 5.1.71, 5.5.33, 5.6.13: "Some characters in the identifier for a foreign key constraint are modified during table exports."