MySQL,HTTP,PHP,Apache,Server,SEO,Discuz,IIS,Mambo,MySQL Remote Access,你太想当汉奸了吧,关美国什么事啊,推背图讲的中国千年国运和重大事件,因特网,Internet,美国企业,重定向,Linux,Indy Library,攻击,Error code,失败科技,博客,域名注册,Network Solution,ITIL,创业,Mic
| 阅读上一个主题 :: 阅读下一个主题 |
| 留言 |
|
如何解决453h安装在mysql 4.1 以上的UTF8数据库中
|
|
| |
|
发布人: Mrs LA
发布于: 2006/03/11, 2:10 pm
|
|
这几天在尝试安装mambo 4.53h版, 由于我的数据库是mysq4.1以上版本,并且设定的字符集是UTF8 。在尝试安装了几次后发现以下几种情况:
1. 将数据库设置为 latin1 , 不修改任何文件,在安装时无论选择gb2312 还是utf8,都可以完成安装,并且网页显示正常,但是通过phpmyadmin看数据表时发现,里面所有中文全部为乱码,也就是说,通过latin1字符集保存,可以正常显示中文网页,但是实际上在数据库中中文是乱码。而且不能通过phpmyadmin备份(备份出来的文件,无论改成什么编码,里面中文均为乱码)。所以这不是王道,我没有做选择考虑。
2. 将数据库字符集设置成utf8, 不修改任何文件,在安装时无论选择gb2312还是utf8,都出现 1071 specified key too long max length 1000 bytes 的错误。并且只要是数据库字符集设置成utf8,(utf8是一个 character set 作为 3 bytes存储,latin1 是作为1 bytes存储),无论是按照论坛中的一些意见,修改 installation/sql/mambo.sql 还是别的文件, 都会出现key 超过1000bytes的错误,安装不能继续。
我本意是要安装manbo的中文utf8版本,以方便和别的程序整合。所以在查询了google,论坛和其他一些资料后,经过尝试,终于以我的想法,以选择 manbo的utf8 字符集 在mysql4.1以上,并且字符集也是utf8 的数据库中安装成功。网页显示中文正常,无乱码,并且用phpmyadmin查询数据库表时,所有中文也都显示正常,并且以utf8保存。以下是我的解决方法,仅供参考:
| 代码: |
| ALTER DATABASE DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci |
或者通过phpmyadmin里面直接改也一样。
修改 installation/sql/mambo.sql 文件:
查找将所有的
替换成
| 代码: |
| TYPE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci; |
查找
| 代码: |
| UNIQUE KEY `section_value_value_aro` (`section_value`,`value`) |
和
| 代码: |
| UNIQUE KEY `#__gacl_section_value_value_aro` (`section_value`,`value`), |
并将这2行代码用 # 注释掉,或者删除,whatever~~
在这一段代码下面,也就是
| 代码: |
| # Table structure for table `#__core_acl_aro_groups` |
上面,按顺序增加以下4行代码:
| 代码: |
| ALTER TABLE `#__core_acl_aro` CHANGE `section_value` `section_value` VARCHAR( 240 ) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL default '0'; |
| 代码: |
| ALTER TABLE `#__core_acl_aro` CHANGE `value` `value` VARCHAR( 240 ) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL default ''; |
| 代码: |
| ALTER TABLE `#__core_acl_aro` ADD UNIQUE `section_value_value_aro` ( `section_value` , `value` ); |
| 代码: |
| ALTER TABLE `#__core_acl_aro` ADD UNIQUE `#__gacl_section_value_value_aro` (`section_value`,`value`); |
-----------------------------
- 修改 includes/database.php 文件:
查找
| 代码: |
| $this->_table_prefix = $table_prefix; |
在该行代码下面添加以下三行代码:
| 代码: |
| mysql_query("SET NAMES 'utf8'", $this->_resource); |
| 代码: |
| mysql_query("SET CHARACTER SET utf8", $this->_resource); |
| 代码: |
| mysql_query("SET COLLATION_CONNECTION='utf8_general_ci'", $this->_resource); |
修改后保存。
安装的时候,选择UTF8作为编码格式安装。
如此修改后能够正常安装,并且在数据库中的中文显示和保存都正常,如果需要整合discuz或者其他程序的时候,也能够选择UTF8版本,并且整合后不会出现在注册时使用中文用户名,但是注册后显示为乱码的现象。
注意事项
经本方法修改后,请在升级manbo的时候,对 includes/database.php 做相应的修改,否则会出错。
以上修改方法是我参考了论坛中的几位达人以及通过google搜索查到的一些英文资料,还有TW manbo的一些资料后,经过尝试完成修改并经测试没有问题的。希望对碰到同样问题的朋友有些用处!觉得有用的朋友顶一下,要对得起我写的那么多东西啊。:lol:lol
原文地址:http://bbs.mambochina.net/archiver/tid-8740.html
|
|
|
|
|
|
返回页首
|
|
 |
|
热门标签: MySQL(7), HTTP(6), PHP(3), Apache(2), Server(2), SEO(2), Discuz(1), IIS(1), Mambo(1), MySQL Remote Access(1), 你太想当汉奸了吧(1), 关美国什么事啊(1), 推背图讲的中国千年国运和重大事件(1), 因特网(1), Internet(1), 美国企业(1), 重定向(1), Linux(1), Indy Library(1), 攻击(1), Error code(1), 失败科技(1), 博客(1), 域名注册(1), Network Solution(1), ITIL(1), 创业(1), Microsoft(1), Yahoo(1), ETag(1)
|
搜索关键字: Specified key was too long; max key length is 1000 bytes(25), #1071 - Specified key was too long; max key length is 1000 bytes(22), mysql 4.1 utf8(5), alter utf8(4), DEFAULT CHARACTER SET utf8(4), UTF8(4), Specified key was too long(3), mysql utf8(3), mambo utf8 数据库乱码 解决(2), utf8 maxlength(2), mambo安装,数据库,错误,Specified key was too long(2), Type=MyISAM CHARACTER SET utf8 ;(2), unique key mysql 什么(2), mambo mysql4.1(2), mambo 数据库 乱码(2), mysql 如何顯示中文(2), manbo 安装(2), MySQL 返回: #1071 - Specified key was too long; max key length is 1000 bytes(2), mysql 保存UTF-8(2), mysql specified key was too long max key length is 1000 bytes(2)
|
|