2013-02-11 91 views
3

我认为这可能是MySQL的一个错误,但我不确定。任何人都可以告诉我如何为表创建主键,然后重命名主约束?如果可能的话,在创建表格时使用所需的名称创建主键。在MySQL上重命名主键约束

我创建的所有主键最终名为“Primary”。已经尝试在添加PK之前用所需的名称创建索引,并使用MySQL Workbench重命名PK。他们都没有工作。

任何人有任何想法是什么错误,为什么我不能重命名PK名称?

谢谢!

+2

这就是MySQL的方式,他们接受但忽略了几件事情。从手册引用“* PRIMARY KEY的名称始终是PRIMARY *”:http://dev.mysql.com/doc/refman/5.5/en/create-table.html – 2013-02-11 17:39:50

回答

6

我不确定MySQL是否允许首先给主键分配名称。虽然似乎是其语法:

CREATE TABLE test (
    test_id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, 
    CONSTRAINT my_test_pk PRIMARY KEY (test_id) 
) 
ENGINE=InnoDB; 

...它没有在information_schema.TABLE_CONSTRAINTS显示我也可以发现这样其他任何地方,我的印象中,它只是静静地丢弃。

您看到的名称可能是您的GUI客户端为所有主键提供的硬编码名称。

编辑:这里的报价从the manual

一个PRIMARY KEY的名字总是PRIMARY,它因此不能 作为名称的任何其他类型的指数。

+0

“PRIMARY”的名称是硬编码的MySQL,而不是客户端。 – 2013-02-11 17:43:29

+0

猜猜我只需要忍受这一点,或迁移到新的数据库。谢谢! – 2013-02-12 09:11:43