Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql phpMyAdmin错误1005_Mysql_Sql_Phpmyadmin_Mysql Error 1005 - Fatal编程技术网

Mysql phpMyAdmin错误1005

Mysql phpMyAdmin错误1005,mysql,sql,phpmyadmin,mysql-error-1005,Mysql,Sql,Phpmyadmin,Mysql Error 1005,这是我的代码…我不知道我做错了什么,因为我是新手。我收到一个1005错误,说明我无法创建bookauthor表 CREATE TABLE Book_Author( BID INTEGER(7) NOT NULL, B_TITLE VARCHAR(25) NOT NULL, AID INTEGER(7) NOT NULL, A_NAME VARCHAR(25) NOT NULL, CONSTRAINT PRIMARY KEY(BID),

这是我的代码…我不知道我做错了什么,因为我是新手。我收到一个1005错误,说明我无法创建bookauthor表

CREATE TABLE Book_Author(
    BID INTEGER(7) NOT NULL,
    B_TITLE VARCHAR(25) NOT NULL,
    AID INTEGER(7) NOT NULL,
    A_NAME VARCHAR(25) NOT NULL,
        CONSTRAINT PRIMARY KEY(BID),
        CONSTRAINT BID_FK
          FOREIGN KEY(BID)
          REFERENCES Book_Info(BID)
          ON DELETE CASCADE
);

你应该按下面的方法试试

CREATE TABLE IF NOT EXISTS `Book_Author` (
  `BID` int(7) NOT NULL,
  `B_TITLE` varchar(25) NOT NULL,
  `AID` int(7) NOT NULL,
  `A_NAME` varchar(25) NOT NULL,
  PRIMARY KEY (`BID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
然后使用
CASCADE

ALTER TABLE `Book_Author`
      ADD CONSTRAINT `BookAuthor` FOREIGN KEY (`BID`) 
REFERENCES Book_Info(BID) ON DELETE CASCADE;
1005(无法创建表格)

无法创建表。如果错误消息指的是错误150,请参阅表 创建失败,因为外键约束不正确 形成。如果错误消息引用错误–1,则创建表 可能失败,因为该表包含匹配的列名 内部InnoDB表的名称

我猜这是因为您没有为
Book\u Info
表创建
PRIMARY KEY
。您正在尝试创建外键约束,这要求两个表都有有效的索引。您可以在
Book\u Info
表中添加主键,如下所示:

ALTER TABLE Book_Info ADD PRIMARY KEY BID_PK(BID);
需要指出的另一点是,您应该检查这两列的类型和长度是否相同

您可以检查引擎的状态,并尝试了解有关此错误的更多信息:

SHOW ENGINE INNODB STATUS\G
然后,您可能会看到更具描述性的错误消息,如下所示:

ALTER TABLE Book_Info ADD PRIMARY KEY BID_PK(BID);
------------------------最新外键错误--------------------
2015-02-21 05:13:34 1116b0000表测试/书的外键约束错误作者:
外键(投标)参考书\u删除级联信息(投标):
在引用的表中找不到索引 其中引用的列显示为第一列,或 表中的类型与引用的表中的类型不匹配 约束。
请注意,枚举和集合的内部存储类型 在使用>=InnoDB-4.1.12创建的表中以及中的此类列中进行了更改 新表中的这些列无法引用旧表。
看见 获取正确的外键定义


你的情况有两种可能

您可能没有使用与父表列相同的
数据类型
ex:父表
BID
varchar
,子表
BID
Integer(7)

或引用的列不是父表上的主键

试试这个

create table Book_Info(BID INTEGER(7) NOT NULL,
                      CONSTRAINT PRIMARY KEY(BID));

CREATE TABLE Book_Author(
    BID INTEGER(7) NOT NULL,
    B_TITLE VARCHAR(25) NOT NULL,
    AID INTEGER(7) NOT NULL,
    A_NAME VARCHAR(25) NOT NULL,
        CONSTRAINT PRIMARY KEY(BID),
        CONSTRAINT BID_FK
          FOREIGN KEY(BID)
          REFERENCES Book_Info(BID)
          ON DELETE CASCADE
);

您必须拥有访问数据库的正确权限。您应该要求系统管理员授予您访问权限,如果您是管理员,则确保您以root身份执行此操作。\1005错误已解决。:- 父表// 创建表性别(

))

子表// 创建表格学生(

));
在子表中,write not null表示该列不允许null值,在外键中,表示从父表中删除记录后,将null放入列(性别\ id)但是该列不允许空值,这就是发生错误的原因:)

确保
Book\u Info
表中
BID
列的数据类型也是
INTEGER(7)
您确定已将
BID
作为
Book\u Info
表中的
主键添加了吗?如果没有,您应该可以这样添加:
altertablebook\u Info添加主键BID\u PK(BID)
id int not null AUTO_INCREMENT PRIMARY KEY,
name varchar(50),
fatherName varchar(50),
gender_id int not null,
CONSTRAINT fk_gender_id FOREIGN KEY (gender_id) REFERENCES gender(id) on DELETE SET null