debian mysql5.0
create table parent( id int not null primary key ) engine = innodb;
create table child(
id int ,
parent_id int,
index par_id (parent_id),
foreign key (parent_id) references parent(id)
) engine=innodb;
这个是手册上的例子,没有问题,通过
DROP TABLE IF EXISTS myweb_kind
;
CREATE TABLE IF NOT EXISTS myweb_kind
(id
tinyint(4) unsigned NOT NULL auto_increment PRIMARY KEY,kind
char(20) NOT NULL
) ENGINE=INNODB DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
-- 内容的子类
DROP TABLE IF EXISTS myweb_category
;
CREATE TABLE IF NOT EXISTS myweb_category
(id
tinyint(4) unsigned NOT NULL auto_increment PRIMARY KEY,category
char(20) NOT NULL,kind_id
tinyint(4) NOT NULL,
INDEX (kind_id
),
FOREIGN KEY (kind_id
) REFERENCES myweb_kind(id)
) ENGINE=INNODB DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
can't create table './myweb/myweb_category.dfm
这是我的例子,错误信息如上
一样的用户,一样的语法(exist之类的去掉也是一样问题)
我又用了django的orm试了一下,
django把这项工作分为三步
两个create,最后再alter category
我用sqlall 把语句打出来,然后自己在控制台里输入,还是报错,郁闷坏了
[b]问题补充:[/b]
index是不能去掉的,mysql规定了,使用外键的列必须是索引的,根据CU上的回答,这个问题解决了,外键列与引用表中的列必须是相同的数据结构,完全相同,所以,还得加上unsigned,这样就可以了
只是,不知道该怎么算分,自己给自己么
[b]问题补充:[/b]
呵呵,没见过这么求分的,其实我也没几分,不过重要的是共同进步