我在执行时SQL
和执行时执行表创建:
create table discos_compactos (
id_disco_compacto int,
titulo_cd varchar(60) not null,
id_disquera int not null,
constraint pk_discos_compactos primary key (id_disco_compacto),
constraint fk_id_disquera foreign key (id_disquera) references disqueras_cd
);
出现错误
外键约束的格式不正确
我从一本书中举了一个例子,但我们之前创建了两个表:
CREATE TABLE TIPOS_MUSICA(
ID_TIPO INT,
NOMBRE_TIPO VARCHAR(20 NOT NULL,
CONSTRAINT UN_NOMBRE_TIPO UNIQUE (NOMBRE_TIPO),
CONSTRAINT PK_TIPOS_MUSICA PRIMARY KEY (ID_TIPO)
);
是
CREATE TABLE DISQUERAS_CD (
ID_DISQUERA INT,
NOMBRE_COMPAÑIA VARCHAR(60) DEFAULT
'Independiente' NOT NULL,
CONSTRAINT PK_DISQUERAS_CD PRIMARY KEY (ID_DISQUERA)
);
代码中可能有什么问题?我已将其放置在示例中...
我遇到了同样的错误,这是由于使用错误的排序规则创建的新表以及与数据库其余部分不同的存储引擎引起的。
通过将新表的排序规则更改为正确的排序规则(从 latin_swedish 到 utf8)并将存储引擎 (MyISAM) 更改为数据库其余部分 (innoDB) 的排序规则,可以解决此问题。
它可以从 phpMyAdmin 界面轻松完成。我刚刚解决了它,所以我仍然无法弄清楚为什么这些属性的加载方式与数据库的其余部分不同。
您好,很好,我遇到了同样的问题,这里所说的对我没有任何帮助,因为我意识到我在外来值和主要值之间的值长度相同,从这个意义上说,它们实际上是双胞胎,然后我做了以下......
[TABLE1]:这是我想引用的主表...
[TABLE2]:这是包含要引用table1的外来的表
外国人不让我用表 1 做的事情如下:
当我修改它们时,我有不同的字符并且错误消失了。希望它会为许多人服务
请注意,如果您在 Unix 环境中,您的问题可能是表名是大写的,而“外键”指的是小写的名称。
如果 MySQL 服务在 Windows 上,这不是您的问题。
看看标识符大小写敏感性。
西班牙语的我没找到,但基本上是说在MySQL中,数据库对应目录,表对应至少一个文件,所以操作系统的大小写敏感性决定了数据库在这方面的行为。
错误是您需要在外部表中指示 FK 引用的列。它会这样做:
该表必须在列上有一个索引
id_disquera
才能在外键中使用它。您的表的创建
discos_compactos
将是:为了创建一个
foreing key
,您必须首先添加一个索引并验证该字段与您要添加的字段具有相同的格式,如果它是 int(10) 它必须foreign
是相同的。如果它有类似unsigned
or的字段zerofill
,在您的情况下,您没有向其中添加引用表的字段。我有同样的问题。经过几个小时的试验,我发现问题是:一个表是MYISAM,另一个表是INNODB。
我在MYISAM中设置了它们,它允许我设置限制