码迷,mamicode.com
首页 > 数据库 > 详细

关于Drupal中使用hook_schema建立数据库报错PDOException: SQLSTATE[42000]的解决办法

时间:2016-05-21 19:00:32      阅读:1475      评论:0      收藏:0      [点我收藏+]

标签:

报错信息如下: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]的解决办法

标签:

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!