创建数据库的sql是这样的:CREATE TABLE `tasks` (
  `task_id` int(11) NOT NULL AUTO_INCREMENT,
  `subject` varchar(200) NOT NULL,
  `owner_id` int(11) NOT NULL,
  PRIMARY KEY  (`task_id`),
  KEY `owner_id` (`owner_id`)
);
 
 
CREATE TABLE `users` (
  `user_id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(20) NOT NULL,
  PRIMARY KEY  (`user_id`),
  UNIQUE KEY `username` (`username`)
);
 
 
ALTER TABLE `tasks` ADD FOREIGN KEY (`owner_id`) REFERENCES `users` (
    `user_id`
) ON DELETE CASCADE;建好库表后,对整个数据库导出,得到的sql语句里面没见到有外键约束啊:--
-- 表的结构 `tasks`
--CREATE TABLE IF NOT EXISTS `tasks` (
  `task_id` int(11) NOT NULL AUTO_INCREMENT,
  `subject` varchar(200) NOT NULL,
  `owner_id` int(11) NOT NULL,
  PRIMARY KEY (`task_id`),
  KEY `owner_id` (`owner_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;--
-- 表的结构 `users`
--CREATE TABLE IF NOT EXISTS `users` (
  `user_id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(20) NOT NULL,
  PRIMARY KEY (`user_id`),
  UNIQUE KEY `username` (`username`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;如果用这样的导出得到的语句,再去建立库表的话,还存在当初的外键约束条件吗?

解决方案 »

  1.   

    ENGINE=MyISAM MyISAM  是不支持外键的。你加了也会被MYSQL忽略,你需要用innodb引擎。
      

  2.   

    改你的语句如下再试。CREATE TABLE `tasks` (
    `task_id` int(11) NOT NULL AUTO_INCREMENT,
    `subject` varchar(200) NOT NULL,
    `owner_id` int(11) NOT NULL,
    PRIMARY KEY  (`task_id`),
    KEY `owner_id` (`owner_id`)
    )ENGINE=innodb;
     
     
    CREATE TABLE `users` (
    `user_id` int(11) NOT NULL AUTO_INCREMENT,
    `username` varchar(20) NOT NULL,
    PRIMARY KEY  (`user_id`),
    UNIQUE KEY `username` (`username`)
    )ENGINE=innodb;
     
     
    ALTER TABLE `tasks` ADD FOREIGN KEY (`owner_id`) REFERENCES `users` (
      `user_id`
    ) ON DELETE CASCADE;
      

  3.   

    只有innodb引擎才支持外键
    CREATE TABLE `tasks` ( 
      `task_id` int(11) NOT NULL AUTO_INCREMENT, 
      `subject` varchar(200) NOT NULL, 
      `owner_id` int(11) NOT NULL, 
      PRIMARY KEY  (`task_id`), 
      KEY `owner_id` (`owner_id`) 
    ) ENGINE=innodb; 
    CREATE TABLE `users` ( 
      `user_id` int(11) NOT NULL AUTO_INCREMENT, 
      `username` varchar(20) NOT NULL, 
      PRIMARY KEY  (`user_id`), 
      UNIQUE KEY `username` (`username`) 
    ) ENGINE=innodb;ALTER TABLE `tasks` ADD FOREIGN KEY (`owner_id`) REFERENCES `users` ( 
        `user_id` 
    ) ON DELETE CASCADE;
      

  4.   


    感恩,这回有了。
    导出后多了这样的语句:--
    -- 限制表 `tasks`
    --
    ALTER TABLE `tasks`
      ADD CONSTRAINT `tasks_ibfk_1` FOREIGN KEY (`owner_id`) REFERENCES `users` (`user_id`) ON DELETE CASCADE;