こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

mySQLでキー長のエラー

var $user_details = array(
'id' => array('type' => 'string', 'null' => false, 'default' => NULL, 'length' => 36, 'key' => 'primary'),
'user_id' => array('type' => 'string', 'null' => false, 'default' => NULL, 'length' => 36),
'position' => array('type' => 'float', 'null' => false, 'default' => '1'),
'field' => array('type' => 'string', 'null' => false, 'default' => NULL, 'key' => 'index'),
'value' => array('type' => 'text', 'null' => true, 'default' => NULL),
'input' => array('type' => 'string', 'null' => false, 'default' => NULL, 'length' => 16),
'data_type' => array('type' => 'string', 'null' => false, 'default' => NULL, 'length' => 16),
'label' => array('type' => 'string', 'null' => false, 'length' => 128),
'created' => array('type' => 'datetime', 'null' => true, 'default' => NULL),
'modified' => array('type' => 'datetime', 'null' => true, 'default' => NULL),
'indexes' => array('PRIMARY' => array('column' => 'id', 'unique' => 1), 'UNIQUE_PROFILE_PROPERTY' => array('column' => array('field', 'user_id'), 'unique' => 1))
);
var $users = array(
'id' => array('type' => 'string', 'null' => false, 'default' => NULL, 'length' => 36, 'key' => 'primary'),
'username' => array('type' => 'string', 'null' => false, 'default' => NULL, 'key' => 'index'),
'slug' => array('type' => 'string', 'null' => false, 'default' => NULL),
'password' => array('type' => 'string', 'null' => true, 'default' => NULL, 'length' => 128),
'password_token' => array('type' => 'string', 'null' => true, 'default' => NULL, 'length' => 128),
'email' => array('type' => 'string', 'null' => true, 'default' => NULL, 'key' => 'index'),
'email_verified' => array('type' => 'boolean', 'null' => true, 'default' => '0'),
'email_token' => array('type' => 'string', 'null' => true, 'default' => NULL),
'email_token_expires' => array('type' => 'datetime', 'null' => true, 'default' => NULL),
'tos' => array('type' => 'boolean', 'null' => true, 'default' => '0'),
'active' => array('type' => 'boolean', 'null' => true, 'default' => '0'),
'last_login' => array('type' => 'datetime', 'null' => true, 'default' => NULL),
'last_action' => array('type' => 'datetime', 'null' => true, 'default' => NULL),
'is_admin' => array('type' => 'boolean', 'null' => true, 'default' => '0'),
'role' => array('type' => 'string', 'null' => true, 'default' => NULL),
'created' => array('type' => 'datetime', 'null' => true, 'default' => NULL),
'modified' => array('type' => 'datetime', 'null' => true, 'default' => NULL),
'indexes' => array('PRIMARY' => array('column' => 'id', 'unique' => 1), 'BY_USERNAME' => array('column' => array('username'), 'unique' => 0), 'BY_EMAIL' => array('column' => array('email'), 'unique' => 0))
);
}

というスキーマ定義をしたところ、


user_detailsだけ、

user_details: SQLSTATE[42000]: Syntax error or access violation: 1071 Specified
key was too long; max key length is 767 bytes


というエラーが出てしまいます。キー長がオーバーしているらしいのですが、具体的にどこをどう修正すれば767バイト以下になるのかわかりません。

色々試して見たのですがわかりませんでした。


ご教示頂ければ幸いです。よろしくおねがいいたします。

投稿日時 - 2012-08-24 09:47:19

QNo.7660520

すぐに回答ほしいです

質問者が選んだベストアンサー

多分こちらの件と同様かと思われますがどうでしょうか?

MySQLの UNIQUEなINDEXには長さ767byteまでしか使えない件と対策
http://d.hatena.ne.jp/tanamon/20090930/1254332746

参考URL:http://d.hatena.ne.jp/tanamon/20090930/1254332746

投稿日時 - 2012-09-12 15:58:20

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)