下面是一组命令:
产生如下错误:
现在,foreign key constraints的mysql文档说明:
alter table opportunities add column ownerId int null;
alter table opportunities add foreign key (ownerId) references users (id) on delete set null on update cascade;
产生如下错误:
因此我理解引用列上缺少索引。表taous /#sql-318c_27的外键约束中存在错误: 表“ taous”。“#sql-318c_27”中没有索引,其中列作为第一列出现。 约束条件: foreign key(ownerId)references users(id)on delete set null on update cascade ;
现在,foreign key constraints的mysql文档说明:
我运行的是mysql 5.1(xampp,windows)。因此,我期望在创建外键时自动索引列。 有任何想法为什么自动索引可能会失败? 还有一点: 只有当通过PDO(一个数据库更新工具)运行sql命令时才会出现错误。直接在mysql控制台中运行时没有问题。 谢谢 GidiInnoDB需要对外键和引用键创建索引,以便外键检查可以快速进行而不需要扫描表。 在引用表中,必须有一个索引,其中外键列按相同顺序列出为第一个列。如果不存在这样的索引,则会自动在引用表上创建此类索引。(与某些较旧版本形成对比,在这些版本中必须显式创建索引或失败创建外键约束)
index_name
,如果给定,将按先前描述的方式使用。
SHOW GRANTS
命令以及SELECT CURRENT_USER()
获取完整的用户名。 - outisusers
表是否已经定义了一个主键,而且该主键正好由列id
组成? - user330315