CREATE TABLE `admins_roles` (
`adminId` varchar(20) NOT NULL,
`roleId` int(11) NOT NULL,
PRIMARY KEY (`adminId`,`roleId`),
KEY `FKEF02020E4DA6F3F2` (`roleId`),
KEY `FKEF02020ED043BDEE` (`adminId`),
CONSTRAINT `FKEF02020E4DA6F3F2` FOREIGN KEY (`roleId`) REFERENCES `role` (`id`),
CONSTRAINT `FKEF02020ED043BDEE` FOREIGN KEY (`adminId`) REFERENCES `admin` (`id`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;FKEF02020E4DA6F3F2 这是什么意思?
自己随便写的还是生成的?
如果不写的话建表是错误的
但是不加CONSTRAINT的约束的话,用建模的工具看没有关联关系。
[CONSTRAINT [symbol]] FOREIGN KEY
[index_name] (index_col_name,...) reference_definition自行决定,可写可不写,不写则由系统自动命名。
-> `id` int(11) NOT NULL,
-> `c1` int(11) DEFAULT NULL,
-> `c2` int(11) DEFAULT NULL,
-> `c3` int(11) DEFAULT NULL,
-> PRIMARY KEY (`id`),
-> CONSTRAINT FOREIGN KEY (`c2`) REFERENCES `t2` (`id`)
-> ) ENGINE=InnoDB ;
Query OK, 0 rows affected (0.11 sec)mysql> show create table tx;
+-------+----------------------------------------------------------------
| Table | Create Table
+-------+----------------------------------------------------------------
| tx | CREATE TABLE `tx` (
`id` int(11) NOT NULL,
`c1` int(11) DEFAULT NULL,
`c2` int(11) DEFAULT NULL,
`c3` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `c2` (`c2`),
CONSTRAINT `tx_ibfk_1` FOREIGN KEY (`c2`) REFERENCES `t2` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+-------+----------------------------------------------------------------
1 row in set (0.00 sec)mysql>
可以不用,系统自行生成
多了1个,
CREATE TABLE `admins_roles` (
`adminId` varchar(20) NOT NULL,
`roleId` int(11) NOT NULL,
PRIMARY KEY (`adminId`,`roleId`),
KEY `FKEF02020E4DA6F3F2` (`roleId`),
KEY `FKEF02020ED043BDEE` (`adminId`),
FOREIGN KEY (`roleId`) REFERENCES `role` (`id`),
FOREIGN KEY (`adminId`) REFERENCES `admin` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
怎么没有关系对应了
导人别的数据库是可以的
为什么?
看来 MySQL Workbench 5.2 CE 有BUG啊