Home  >  Article  >  Database  >  安装在MySQL4.1的453h出现问题的解决

安装在MySQL4.1的453h出现问题的解决

WBOY
WBOYOriginal
2016-06-07 16:11:311124browse

以下的文章主要是对解决453h安装在MySQL4.1 以上的UTF8数据库,在实际运行中所造成的乱码问题与安装失败的问题解答,以下就是文章的具体内容的描述,望你在浏览之后会对其实际操作有所了解。 这几天在尝试安装mambo 4.53h版, 由于我的数据库是mysq4.1以上版

以下的文章主要是对解决453h安装在MySQL4.1 以上的UTF8数据库,在实际运行中所造成的乱码问题与安装失败的问题解答,以下就是文章的具体内容的描述,望你在浏览之后会对其实际操作有所了解。

这几天在尝试安装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保存。以下是我的解决方法,仅供参考:

首先设置数据库字符集为utf8,

<ol class="dp-xml"><li class="alt"><span><span>CODE:[Copy to clipboard]ALTER DATABASE DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci </span></span></li></ol>

或者通过phpmyadmin里面直接改也一样。

修改 installation/sql/mambo.sql 文件:

查找将所有的

<ol class="dp-xml"><li class="alt"><span><span>CODE:[Copy to clipboard]</span><span class="attribute">TYPE</span><span>=</span><span class="attribute-value">MyISAM</span><span>;  </span></span></li></ol>

替换成

<ol class="dp-xml"><li class="alt"><span><span>CODE:[Copy to clipboard]</span><span class="attribute">TYPE</span><span>=</span><span class="attribute-value">MyISAM</span><span> DEFAULT </span><span class="attribute">CHARSET</span><span>=</span><span class="attribute-value">utf8</span><span> </span><span class="attribute">COLLATE</span><span>=</span><span class="attribute-value">utf8_general_ci</span><span>;  </span></span></li></ol>

查找

<ol class="dp-xml"><li class="alt"><span><span>CODE:[Copy to clipboard]UNIQUE KEY `section_value_value_aro` (`section_value`,`value`)  </span></span></li></ol>

<ol class="dp-xml"><li class="alt"><span><span>CODE:[Copy to clipboard]UNIQUE KEY `#__gacl_section_value_value_aro` (`section_value`,`value`),  </span></span></li></ol>

并将这2行代码用 # 注释掉,或者删除,whatever~~

在这一段代码下面,也就是

<ol class="dp-xml"><li class="alt"><span><span>CODE:[Copy to clipboard]# Table structure for table `#__core_acl_aro_groups`  </span></span></li></ol>

上面,按顺序增加以下4行代码:

CODE:[Copy to clipboard]ALTER TABLE `#__core_acl_aro` CHANGE `section_value` `section_value` VARCHAR( 240 ) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL default '0';

CODE:[Copy to clipboard]ALTER TABLE `#__core_acl_aro` CHANGE `value` `value` VARCHAR( 240 ) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL default '';

CODE:[Copy to clipboard]ALTER TABLE `#__core_acl_aro` ADD UNIQUE `section_value_value_aro` ( `section_value` , `value` );

CODE:[Copy to clipboard]ALTER TABLE `#__core_acl_aro` ADD UNIQUE `#__gacl_section_value_value_aro` (`section_value`,`value`);

修改 includes/database.php 文件:

查找

<ol class="dp-xml"><li class="alt"><span><span>CODE:[Copy to clipboard]$this-</span><span class="tag">></span><span class="attribute">_table_prefix</span><span> = $table_prefix;  </span></span></li></ol>

在该行代码下面添加以下三行代码:

<ol class="dp-xml">
<li class="alt"><span><span>CODE:[Copy to clipboard]MySQL(和PHP搭配之最佳组合)_query("SET NAMES 'utf8'", $this-</span><span class="tag">></span><span>_resource);   </span></span></li>
<li>
<span>CODE:[Copy to clipboard]MySQL(和PHP搭配之最佳组合)_query("SET CHARACTER SET utf8", $this-</span><span class="tag">></span><span>_resource);  </span>
</li>
<li class="alt">
<span>CODE:[Copy to clipboard]MySQL(和PHP搭配之最佳组合)_query("SET </span><span class="attribute">COLLATION_CONNECTION</span><span>=</span><span class="attribute-value">'utf8_general_ci'</span><span>", $this-</span><span class="tag">></span><span>_resource);  </span>
</li>
</ol>

修改后保存。

安装的时候,选择UTF8作为编码格式安装。

如此修改后能够正常安装,并且在数据库中的中文显示和保存都正常,如果需要整合discuz或者其他程序的时候,也能够选择UTF8版本,并且整合后不会出现在注册时使用中文用户名,但是注册后显示为乱码的现象。

注意事项

经本方法修改后,请在升级manbo的时候,对 includes/database.php 做相应的修改,否则会出错。

以上修改方法是我参考了论坛中的几位达人以及通过google搜索查到的一些英文资料,还有TW manbo的一些资料后,经过尝试完成修改并经测试没有问题的。希望对碰到同样问题的朋友有些用处!觉得有用的朋友顶一下,要对得起我写的那么多东西啊。

以上的相关内容就是对解决453h安装在MySQL4.1的介绍,望你能有所收获。 


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn