关于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,重新安装模块问题解决。

原文地址:https://www.cnblogs.com/HowToEncodingTheSingular-point/p/5515318.html