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的约束的话,用建模的工具看没有关联关系。

解决方案 »

  1.   

    查一下MYSQL手册中的语法就明白了。 这个是CONSTRAINT的名称
    [CONSTRAINT [symbol]] FOREIGN KEY
          [index_name] (index_col_name,...) reference_definition
    自行决定,可写可不写,不写则由系统自动命名。
      

  2.   

    估计你没写对。 mysql> 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`),
        ->   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>
      

  3.   

    约束名,自己写的
    可以不用,系统自行生成
    多了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;
      

  4.   

    我用MySQL Workbench 5.2 CE 导入表里的ER模型
    怎么没有关系对应了
    导人别的数据库是可以的
    为什么?
      

  5.   

    数据库删了从新建 就出来
    看来 MySQL Workbench 5.2 CE  有BUG啊