完全突破phpMyAdmin备份恢复2MB限制和Mysql跨版本转移乱码问题
个人接触php是2006年(大2),此后discuz,dedecms,phpwind,wordpress等程序在中国的普及使得PHP技术在中国备受广大草根站长热捧,一些Apache,PHP,Mysql的问题也随之突出。
一,首先是完全突破phpMyAdmin备份恢复2MB限制的方法(个人使用xampp集成安装环境):
1,修改c:\windows\php.ini文件()找到post_max_size(通过表单POST给PHP的所能接收的最大值,包括表单里的所有值,默认为8M),upload_max_filesize(允许上传文件大小的最大值。默认为2M),max_execution_time(每个PHP页面运行的最大时间值(秒),默认30秒),max_input_time(每个PHP页面接收数据所需的最大时间,默认60秒),memory_limit(每个PHP页面所吃掉的最大内存,默认8M)分别修改大小限制,最简单的就是补一个0。这样重启apache后,phpMyAdmin的恢复界面还是显示限制2MB,网上有教程说其实是可以上传的。
2,个人还是建议修改一下c:\phpmyadmin\import.php文件,查找$memory_limit,默认为$memory_limit = 2 * 1024 * 1024;改为20* 1024 * 1024;即可使得phpMyAdmin后台恢复界面限制由2MB变成20MB
二,再谈谈Mysql乱码的问题:
Mysql乱码问题源于MySQL 4.1对多语言的支持有了很大变化,MySQL 4.1的字符集支持(Character Set Support)有两个方面:字符集(Character set)和排序方式也即校对规则(Collation)。对于字符集的支持细化到四个层次: 服务器(server),数据库(database),数据表(table)和连接(connection)。Mysql4.1以上本版默认字符集是latin1,而且默认校对规则(Collation)是latin1_swedish_ci。
修改mysql的默认字符集,在mysql配置文档my.ini 找到default-character-set=latin1,建议不修改,因为启动mysql时,character_set_server 被设定为这个默认的字符集; 当创建一个新的数据库时,这个数据库的字符集被缺省设定为 character_set_server; 在这个数据库里创建一张表时,表默认的字符集被设定为这个数据库默认的字符集; 当在表内设置一字段时,此字段栏缺省的字符集就是表默认的字符集。
所以在建立数据库,数据库表,数据库表字段的过程中可以自定义字符集,中国用户一般情况下也就使用gb2312,gbk,utf8这三种。建议在新建数据库时就直接指定字符集,如CREATE DATABASE `litao_biz` DEFAULT CHARACTER SET utf8 COLLATE uft8_general_ci;这句话设置了数据库litao_biz的字符集是utf8,同时MySQL 连接校对被设置为uft8_general_ci。再新建的数据库表的连接校对规则也默认继承uft8_general_ci,phpMyAdmin中将不会再显示latin1_swedish_ci;。
数据库字符集,连接校对规则设定后,在PHP文件中访问Mysql数据库是需要指定连接字符编码
$conn = mysql_connect("localhost","root","");
mysql_query("set names 'utf8'");//这就是指定数据库字符集,一般放在连接数据库后面就系了
mysql_select_db("litao_biz");
如果我们将mysql_query("set names 'gbk'");注释掉,肯定时乱码。你数据库用什么编码,在对数据库操作之前就set names '你的编码';
有了以上建立数据库的经验,在将低版本的Mysql数据库转移到高版本Mysql数据库时,李涛建议一般先在低版本Mysql管理界面phpMyAdmin中搞清楚其字符集(gbk,utf8,gb2312),连接校对规则(utf8_general_ci,gbk_chinese_ci,latin1_swedish_ci等),直接备份数据库中的数据表即可(不要备份整个数据库)然后在高版本的Mysql管理界面phpMyAdmin中新建相应字符集和连接校对规则的数据库(具体MySQL 字符集: UTF-8 Unicode (utf8),MySQL 连接校对utf8_general_ci,litao_biz将整理选择为utf8_general_ci即可),进入import导入界面,注意一个选项Format of imported file-----SQL compatibility mode----NONE,将NONE改为MYSQL40或者其他,执行。这样就成功的将低版本的Mysql数据库4.1转移到高版本Mysql数据库5.0。



Leave a Reply