-1

こんにちは、だれか助けてください。mysql でテーブルを作成しているときに、次のエラーが表示されます。

MySQL エラー 1071: 指定されたキーが長すぎます。キーの最大長は 767 バイトです

私のテーブル定義は次のとおりです。

CREATE TABLE oauth_consumer (id char(36)  NOT NULL ,
  name varchar(255)  NULL ,
  date_entered datetime  NULL ,
  date_modified datetime  NULL ,
  modified_user_id char(36)  NULL ,
  created_by char(36)  NULL ,
  description text  NULL ,
  deleted bool  DEFAULT '0' NULL ,
  assigned_user_id char(36)  NULL ,
  c_key varchar(255)  NULL ,
  c_secret varchar(255)  NULL, 
  PRIMARY KEY (id),
  UNIQUE ckey (c_key)
);
4

2 に答える 2

0

クエリに問題はありません。古いバージョンのMySqlを実行している可能性があります。新しいバージョンを使用してください。新しいバージョンを使用している場合は、次のクエリを使用してテーブルを作成してみてください

CREATE TABLE `oauth_consumer` (
    `id` CHAR(36) NOT NULL,
    `name` VARCHAR(255) NULL DEFAULT NULL,
    `date_entered` DATETIME NULL DEFAULT NULL,
    `date_modified` DATETIME NULL DEFAULT NULL,
    `modified_user_id` CHAR(36) NULL DEFAULT NULL,
    `created_by` CHAR(36) NULL DEFAULT NULL,
    `description` TEXT NULL,
    `deleted` TINYINT(1) NULL DEFAULT '0',
    `assigned_user_id` CHAR(36) NULL DEFAULT NULL,
    `c_key` VARCHAR(255) NULL DEFAULT NULL,
    `c_secret` VARCHAR(255) NULL DEFAULT NULL,
    PRIMARY KEY (`id`),
    UNIQUE INDEX `ckey` (`c_key`)
)
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB;
于 2013-01-16T05:00:03.940 に答える
0

まず、データベースの文字セットが utf8 に設定されている可能性が高いため、255 文字が 765 文字にまで膨らみます。近いとはいえ、課された制限の 767 を超えることはありませんが、それでもその制限に達している理由がわかります。

とにかく、このような幅の広いキーを使用することはお勧めしません。値の md5 または sha1 を計算し、代わりにそれを一意のキーに使用できます (ちなみに、ハッシュのバイナリ表現を使用する必要があります)。

于 2013-01-16T07:24:02.413 に答える