MySQL Error number: 3756; Symbol: ER_FUNCTIONAL_INDEX_PRIMARY_KEY; SQLSTATE: HY000

文档解释

Error number: 3756; Symbol: ER_FUNCTIONAL_INDEX_PRIMARY_KEY; SQLSTATE: HY000

Message: The primary key cannot be a functional index

ER_FUNCTIONAL_INDEX_PRIMARY_KEY错误是MySQL数据库服务器抛出的一个错误。这个错误代表不能将功能索引列定义为主键。

错误说明:

MySQL ER_FUNCTIONAL_INDEX_PRIMARY_KEY错误表明使用者在创建索引的时候,尝试将索引的列定义为主键,但是这个索引是一个功能性索引,不能被定义为主键,这个主键所指向的列需要保持每行数据的唯一性,而功能性索引并不能保持列值的唯一性,所以不能用这个索引作为主键,服务器将把这种做法识别出并且抛出ER_FUNCTIONAL_INDEX_PRIMARY_KEY的错误。

常见案例

假设一个表里面有三个列,分别是ID,Name和Country,如果管理员尝试将Country列定义为主键,添加一个功能性索引(比如根据Country的值来按照字母序排列表中数据),这时MySQL服务器将抛出ER_FUNCTIONAL_INDEX_PRIMARY_KEY错误,让管理员知道该索引不能被定义为主键,因为它不能保持Country一列的唯一性,从而保证每一行数据的唯一性。

解决方法:

解决MySQL ER_FUNCTIONAL_INDEX_PRIMARY_KEY错误的方法则是,把索引定义为唯一性索引或者把索引定义为普通索引,不把它定义为主键,只是用它来指向一行数据,而不是强制要求一行数据唯一。而如果要定义一个列为主键的时候,MySQL服务器会提示用户它需要添加一个唯一性索引列来保障列值的唯一性,从而能够把这个列定义为主键。

你可能感兴趣的