MYSQL建表报错
CREATE TABLE Company.EMPLOYEE
(Fname VARCHAR(15) NOT NULL,
Minit CHAR,
Lname VARCHAR(15) NOT NULL,
Ssn CHAR(9) NOT NULL,
Bdate DATE,
Address VARCHAR(30),
Sex CHAR,
Salay DECIMAL(10,2),
Super_ssn CHAR(9),
Dno INT NOT NULL,
PRIMARY KEY(Ssn),
FOREIGN KEY(Super_ssn) REFERENCES EMPLOYEE(Ssn),
FOREIGN KEY(Dno) REFERENCES DEPARTMENT(Dnumber)
);
*************************************************
错误提示是:
Error Code: 1005. Can't create table 'company.employee' (errno: 150)
求助各位大侠,为什么啊?
补充:我把
FOREIGN KEY(Super_ssn) REFERENCES EMPLOYEE(Ssn),
FOREIGN KEY(Dno) REFERENCES DEPARTMENT(Dnumber)
这连个REFERENCES约束去掉后就能运行了
很奇怪 是为什么呢
追问:还是不行诶
ERROR 1103 (42000): Incorrect table name 'EMPLOYEE '我建的COMPANY是一个空的SCHEMA诶,EMPLOYEE是第一个表啊?
我把
FOREIGN KEY(Super_ssn) REFERENCES EMPLOYEE(Ssn),
FOREIGN KEY(Dno) REFERENCES DEPARTMENT(Dnumber)
这2个REFERENCES约束去掉后就能运行了嗯?那怎么办呢?mysql> KEY `Dno` (`Dnumber`);
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 'KEY `
Dno` (`Dnumber`)' at line 1
是这样写么??还是不行啊进入了啊。use Company嗯。是不存在啊。
DEPARTMENT的表我还没有建立,Dnumber确实也不存在。
不存在就不能在现在设立外键参照么?
答案:Company应该是你的库吧,建表的时候不需要带上库名
只要在本库下运行sql语句就可以,你试下下面的语句
创建一个EMPLOYEE的表
CREATE TABLE `EMPLOYEE `
(`Fname` VARCHAR(15) NOT NULL,
`Minit` CHAR,
`Lname` VARCHAR(15) NOT NULL,
`Ssn` CHAR(9) NOT NULL,
`Bdate` DATE,
`Address` VARCHAR(30),
`Sex` CHAR,
`Salay` DECIMAL(10,2),
`Super_ssn` CHAR(9),
`Dno` INT NOT NULL,
PRIMARY KEY(Ssn),
FOREIGN KEY(Super_ssn) REFERENCES EMPLOYEE(Ssn),
FOREIGN KEY(Dno) REFERENCES DEPARTMENT(Dnumber)
);
其他:添加外键的表名不行??
建议你用图形化工具创建表。
像navicat。。 你说EMPLOYEE是第一个表的话肯定建不起来的,因为要引用DEPARTMENT表的Dnumber字段,如果外键找不到被引用的表和字段,会报1005,errno 150错误的。
所以你得先建DEPARTMENT表
好的习惯是,所有表都建好了之后再增加外键约束。没有必要写进建表语句的。
上一个:我用我的电脑搭建了数据库,那么其他人在没有mysql的情况下,可以访问我的数据库么?
下一个:如何用mysqldump备份discuz x2.5的数据库。