我在phpmysql.i中比较新,需要一些帮助...
我在windows7.server版本中使用wamp服务器是2.2.22而php版本是5.3.13.我的数据库名称是db_attendance1
。我有两个表users
和leave
。在用户表中我有以下列
empID(int)
username(varchar)
password(varchar)
mac(varchar)
ip(varchar)
在离开表格中我有以下列
lid(int)
empname(varchar)
username(varchar)
nod(int)
sdate(date)
edate(date)
reason(varchar)
action(varchar)
现在我想在离开表中使用empID。我可以使用它。我必须说我已经应用了一个代码,但它不能正常工作。它给出了以下错误..
详细介绍了以下内容..
InnoDB文档
支持事务,行级锁定和外键
[变量|缓冲池| InnoDB状态]
和代码
create table `leave`(
lid INT NOT NULL AUTO_INCREMENT,
empID INT,
empname VARCHAR(255) NOT NULL,
username VARCHAR(255) NOT NULL,
nod INT NOT NULL,
sdate DATE,
edate DATE,
reason VARCHAR(255) NOT NULL,
PRIMARY KEY(lid),
FOREIGN KEY(empID) REFERENCES users(empID)
);
所以有什么不对......请帮帮我..
答案 0 :(得分:0)
create table users(
empID INT,
PRIMARY KEY(empID) /*<<< ADD THIS */
);
create table `leave`(
lid INT NOT NULL AUTO_INCREMENT,
empID INT,
empname VARCHAR(255) NOT NULL,
username VARCHAR(255) NOT NULL,
nod INT NOT NULL,
sdate DATE,
edate DATE,
reason VARCHAR(255) NOT NULL,
PRIMARY KEY(lid),
FOREIGN KEY(empID) REFERENCES users(empID)
);
答案 1 :(得分:0)
在外键声明之前使用INDEX(empID)
答案 2 :(得分:0)
尝试此操作来修复错误:
create table `leave`(
`lid` bigint(20) NOT NULL AUTO_INCREMENT,
`empID` INT(11),
`empname` VARCHAR(255) NOT NULL,
`username` VARCHAR(255) NOT NULL,
`nod` INT(11) NOT NULL,
`sdate` DATE,
`edate` DATE,
`reason` VARCHAR(255) NOT NULL,
PRIMARY KEY(`lid`),
FOREIGN KEY(`empID`) REFERENCES users(`empID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=311 ;
答案 3 :(得分:0)
errno: 150
是外键约束错误。您可以在失败的SHOW ENGINE INNODB STATUS
失败后立即在同一连接上发出查询CREATE TABLE
,以获取更多详细信息。
需要注意的事项: