utf8mb4 などの環境でインストールに失敗
kilica opened this issue · 4 comments
kilica commented
MySQL utf8mb4 などの環境でインストールに失敗する。
file
, userdat
テーブルで以下のメッセージが出ます。
Specified key was too long; max key length is 767 bytes (SQLState:S1000)
nao-pon commented
とりあえずですが、カラムの文字エンコーディングを指定してみようと思いますが如何でしょうか?
MySQL 6 は、utf8 が4バイトになるそうなので、その時はまた考え直さなくてはいけませんが・・・・
CREATE TABLE `file` (
`file_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`parent_id` int(10) unsigned NOT NULL DEFAULT '0',
`name` varchar(255) character SET utf8 NOT NULL DEFAULT '',
`size` bigint(20) unsigned NOT NULL DEFAULT '0',
`ctime` int(10) unsigned NOT NULL DEFAULT '0',
`mtime` int(10) unsigned NOT NULL DEFAULT '0',
`perm` varchar(3) NOT NULL DEFAULT '',
`umask` varchar(3) NOT NULL DEFAULT '022',
`uid` int(10) unsigned NOT NULL DEFAULT '0',
`gid` int(10) unsigned NOT NULL DEFAULT '0',
`home_of` int(10) DEFAULT NULL,
`mime` varchar(255) NOT NULL DEFAULT 'unknown',
`width` int(11) NOT NULL DEFAULT '0',
`height` int(11) NOT NULL DEFAULT '0',
`gids` varchar(255) NOT NULL DEFAULT '',
`mime_filter` varchar(255) NOT NULL DEFAULT '',
`local_path` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (`file_id`),
UNIQUE KEY `parent_name` (`parent_id`,`name`),
KEY `parent_id` (`parent_id`)
) ENGINE=MyISAM;
CREATE TABLE `userdat` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`uid` int(10) unsigned NOT NULL DEFAULT '0',
`key` varchar(255) character SET ascii NOT NULL DEFAULT '',
`data` blob NOT NULL,
`mtime` int(10) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `uid_key` (`uid`,`key`)
) ENGINE=MyISAM;
kilica commented
ご返信ありがとうございます。
一部だけ文字コードが変わると、どこかで嵌りそう(そしてなかなか気づけない!)な気がするので、varchar(191)にするほうがいいように思います(確信があるわけではないのですが ^ ^;;)。
mambax7 commented
You could also use something like:
UNIQUE KEY `parent_name` (`parent_id`,`name`(100)),