关于Drupal中使用hook_schema建立数据库报错PDOException: SQLSTATE[42000]的解决办法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于Drupal中使用hook_schema建立数据库报错PDOException: SQLSTATE[42000]的解决办法相关的知识,希望对你有一定的参考价值。
报错信息如下:PDOException: SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 3072 bytes: CREATE TABLE {start_zero_order} ( `id` INT unsigned NOT NULL auto_increment COMMENT ‘The order id.‘, `username` VARCHAR(64) NOT NULL COMMENT ‘××ב, `order` VARCHAR(4096) NULL DEFAULT NULL COMMENT ‘×××.‘, PRIMARY KEY (`id`), UNIQUE KEY `username` (`username`), INDEX `order` (`order`) ) ENGINE = InnoDB DEFAULT CHARACTER SET utf8 COMMENT ‘the taxi order.‘; Array ( ) 在 db_create_table()
这时要先卸载模块,然后修改数据长度,具体而言,我的数据库支持的key长度是3072,而不同编码格式每个字符所占长度是不同的:
latin1 = 1 byte = 1 character
uft8 = 3 byte = 1 character
gbk = 2 byte = 1 character
因此上面的sql语句光order字段就需要长度4096*3=12288 bytes,所以报错了。改成512,重新安装模块问题解决。
以上是关于关于Drupal中使用hook_schema建立数据库报错PDOException: SQLSTATE[42000]的解决办法的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法使用 WordPress 或 Drupal 建立一个类似 ushahidi 的网站?
Drupal 7 模块开发 建立模块帮助信息(hook_help)