innodb存储引擎表,mysql版本5.1.41-log,linux系统:mysql>
mysql> alter table child add constraint fk_pid foreign key child(pid) references parent(id) on update cascade;
ERROR 1005 (HY000): Can't create table 'test.#sql-ddf_7' (errno: 150)
mysql>
mysql>

解决方案 »

  1.   

    两个表的show create table 贴出来。问题说明越详细,回答也会越准确!参见如何提问。(提问的智慧
        
      

  2.   

     * 两个表必须是InnoDB表类型。
        * 使用在外键关系的域必须为索引型(Index)。
        * 使用在外键关系的域必须与数据类型相似。建表SQL是什么 
      

  3.   

    CREATE TABLE `child` (
      `id` int(11) DEFAULT NULL,
      `name` varchar(20) DEFAULT NULL,
      `pid` int(11) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;CREATE TABLE `parent` (
      `id` int(11) DEFAULT NULL,
      `name` varchar(20) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
      

  4.   

    CREATE TABLE `child` (
      `id` INT(11) DEFAULT NULL,
      `name` VARCHAR(20) DEFAULT NULL,
      `pid` INT(11) KEY
    ) ENGINE=INNODB DEFAULT CHARSET=utf8;CREATE TABLE `parent` (
      `id` INT(11) PRIMARY KEY ,
      `name` VARCHAR(20) DEFAULT NULL
    ) ENGINE=INNODB DEFAULT CHARSET=utf8;
    ALTER TABLE child ADD CONSTRAINT fk_pid FOREIGN KEY child(pid) REFERENCES parent(id) ON UPDATE CASCADE;