如何在mysql中指定唯一字段的索引名

如何在mysql中指定唯一字段的索引名,mysql,Mysql,我正在指定一个字段,用户名,作为我的应用程序的唯一字段。作为安装的一部分,用户可以选择指定表前缀。但自动创建的唯一索引不会继承该表前缀 CREATE TABLE IF NOT EXISTS ".$prefix."users ( id int(11) NOT NULL AUTO_INCREMENT, username varchar(50) UNIQUE NOT NULL, PRIMARY KEY (id) ) E

我正在指定一个字段,用户名,作为我的应用程序的唯一字段。作为安装的一部分,用户可以选择指定表前缀。但自动创建的唯一索引不会继承该表前缀

    CREATE TABLE IF NOT EXISTS ".$prefix."users (
          id int(11) NOT NULL AUTO_INCREMENT,
          username varchar(50) UNIQUE NOT NULL,
          PRIMARY KEY (id)
        ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
自动创建的索引名为username。如果对同一数据库进行第二次安装,则会发生冲突


是否有方法使用前缀创建索引,或者在创建表后是否需要删除索引并使用前缀重新创建?

您可以提供一个明确的索引名称,如下所示:

CREATE TABLE IF NOT EXISTS ".$prefix."users (
      id int(11) NOT NULL AUTO_INCREMENT,
      username varchar(50) NOT NULL,
      PRIMARY KEY (id),
      UNIQUE $unique_index_name (username)
    ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

您可以提供一个明确的索引名,如下所示:

CREATE TABLE IF NOT EXISTS ".$prefix."users (
      id int(11) NOT NULL AUTO_INCREMENT,
      username varchar(50) NOT NULL,
      PRIMARY KEY (id),
      UNIQUE $unique_index_name (username)
    ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

索引名冲突不是真的。如果执行此操作:

create table x1 (x int unique);
create table x2 (x int unique);

没有错误,因此没有索引名冲突。

索引名冲突不是真的。如果执行此操作:

create table x1 (x int unique);
create table x2 (x int unique);

没有错误,因此没有索引名冲突。

正是我要找的。非常感谢。这正是我想要的。非常感谢。