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バイト以下になるのかわかりません。
色々試して見たのですがわかりませんでした。
ご教示頂ければ幸いです。よろしくおねがいいたします。
お礼
ありがとうございます。 とても詳しく説明していただき、自分なりに多少理解できたと思います。もう少し勉強する必要があるかと思いますが・・・。 本当にありがとうございました。