nao-pon/xelfinder

utf8mb4 などの環境でインストールに失敗

kilica opened this issue · 4 comments

MySQL utf8mb4 などの環境でインストールに失敗する。
file, userdat テーブルで以下のメッセージが出ます。

Specified key was too long; max key length is 767 bytes (SQLState:S1000)

参考
https://tanamon.hatenablog.jp/entry/20090930/1254332746

とりあえずですが、カラムの文字エンコーディングを指定してみようと思いますが如何でしょうか?

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;

ご返信ありがとうございます。
一部だけ文字コードが変わると、どこかで嵌りそう(そしてなかなか気づけない!)な気がするので、varchar(191)にするほうがいいように思います(確信があるわけではないのですが ^ ^;;)。

You could also use something like:

UNIQUE KEY `parent_name` (`parent_id`,`name`(100)),

@kilica , @mambax7 I'll fix it! Thanks 👍