提前声明一下,这篇文章是一个纯粹的mysql新手写的。所有的操作可能效率低下,但我保证绝对有效。在我的400M数据库上操作成功,没有任何问题! !我正在使用,所以以下操作均指操作系统
相信很多pw论坛的用户都会发现,在浏览自己论坛的中文内容时,所有的汉字都是乱码,无法正常浏览。而在那些数据表的结构中,你会发现它们的“排列方式”(即数据表的字符集)是。啊?我下载的显然是GBK编码的pw论坛安装程序。什么时候变成了这种莫名其妙的瑞典语了?但是,当你把data/.php中$='gbk'这句话中的GBK删除后,你的论坛即使使用字符编码也能正常使用。既然能用,相信很多人就不会在意,继续下去。继续使用它。
但问题是,如果以后扩展论坛的内容,需要集成一些GBK编码的插件或者程序,就会出现问题,无法使用,因为GBK编码的程序无法正确读取编码后的pw论坛数据库,导致乱码。大大~~郁闷。从长远来看,为了大局,还是恢复pw数据库的童真比较安全~~
我简单说一下这个问题的原因。其实网上有很多(对于新手来说,最好的教程来自搜索引擎)。既然我们是新手,就不去深究那些复杂深奥的XXX理论了。总之,出现编码问题是因为.0版本前后使用的默认字符集编码不一致。导致我们在升级mysql的时候没有关注或者没有注意到这个极其重要的一点。结果我们手动创建的,在打开数据库的时候,没有把默认编码改成正确的gbk编码,于是我们的数据库就一直以错误的字符编码默默存在~~好可怜的数据库啊,谁让你大师了像我这样的新手~
好了,现在我们的目标是将数据库的编码改为gbk。什么?您是否惊讶地发现可以手动修改数据表的编码?好的,恭喜您发现了 .您能修改一下每个数据表中各个字段的编码吗?嗯,不多,就几百个~~什么?你真的就这么改了吗?哇~~你是我见过最执着最花时间的家伙~~~什么?更改后就无法使用了。依然是乱码。 。 。 。呃~~我错了。只需更改表面字符集即可。事实上,数据还没有被mysql编译过,其内容不会改变。而且mysql一共有4个方面涉及到字符集、数据、、、。你只要改变它。更改数据是不可能的~~。 。 。 。 。 。不要怪我,不要批评我~~~我是在网上找到的。 。 。我也是新手,刚刚才知道~~~
呵呵,看来这个没有任何技术含量的操作不太可行啊~各位兄弟姐妹帅哥美女们,跟着我一步步来吧
第一步:备份数据库,什么?它是做什么用的?我晕~~~这种做事不留退路的人,居然来这个论坛?
你既可以使用pw自带的后台程序进行备份,也可以直接将你的数据库复制到mysql/data/下。建议数据库较大的使用后者,比较方便~对了,备份之前别忘了关闭论坛。啊,关闭论坛后,最好修复一下数据库,优化一下。另外,清除论坛中的一些垃圾信息,比如前后端管理日志、短信等,数据量越小,成功率越高。
步骤2:打开命令行。既然菜品也分等级,那就记下来吧。我们不会歧视每一个新手:开始-运行-输入cmd-回车
输入命令行,然后进入mysql的bin目录。我的是c:\.0\bin。输入命令如下:
C:\ 和 \>cd c:\.0\bin
c:\.0\bin>
ok,进入bin目录后,就可以运行著名的命令了。这是mysql自带的数据库备份程序。有很多参数可以使用。详细内容你可以从课本上学习。我刚刚复制了它。要使用,请在命令行中输入以下命令:
c:\.0\bin> -uroot - ----set= --set-=gbk --skip-opt > .sql
我们来解释一下这行命令的作用:
-u 数据库管理员用户名,这里是root
-p 数据库管理员密码,这里是
----set= 这句话表示你要导出的数据库的字符编码是什么,是utf8还是其他。
--set-=gbk 这句话指定导出的数据库文件的格式。你可以写任何你想要的东西。难道我们不想把它转换成GBK吗?就写这个吧。
--skip-opt 这句话很有争议。使用此参数将导致导出的数据库中丢失一些内容。您只能手动添加它们。但这就是我所做的,而且已经成功了。所以为了确保成功,纯粹的新手应该按照我的指示进行。来吧这个。一些进阶的朋友可以参考这篇文章来尝试一下。
这是您要导出的数据库的名称。
.sql 是要将数据库导出到的文件的名称。
好的,编写命令并按 Enter 键。如果您的数据库比较大,可能需要等待一段时间。过了一会儿,你会发现你的bin目录中存在.sql文件。这是您的整个数据库。
接下来我们必须对 .sql 文件做一些事情,并且我们不能直接将其导入回来。建议使用此文本编辑软件打开数据量大的.sql文件。如果数据真的很大的话,我的数据库有近400M,我打开它需要很长时间。
第三步:首先在所有SQL执行语句前添加一句
复制代码
设置名称“gbk”;
,一般是第一个数据表(如果安装了其他插件,可能不是这个表,不管是什么,只要添加在第一个表之前即可),可以添加在创建语句之前这个表,如下所示:
复制代码
---- 表为表``--set 名称'gbk';
表 `` (`id` (6) NOT NULL ,`` char(15) NOT NULL '',`name` char(15) NOT NULL '',`` char(100) NOT NULL '',`类型` char(15) NOT NULL '', KEY (`id`)) =;
---- 表的数据``--
。 。 。 。 。 。 。 。 。
这组名称'gbk'的声明非常重要。你可以去网上看看这个说法的具体含义。
第四步:因为刚才使用了--skip-opt参数,所以数据表中所有需要自动添加的字段的属性都丢失了,没有导出到sql文件中。我们需要手动添加它。有人开始感叹,哇~~有几十个数据库~~~嘿嘿,别担心,其实并不多。一旦你掌握了技巧,速度就会非常快。
中搜索“TABLE”。下面一行的字段一般需要添加属性,如:
复制代码
表 `` (`id` (6) NOT NULL,`` char(15) NOT NULL '',`name` char(15) NOT NULL '',`` char(100) NOT NULL '',`类型` char(15) NOT NULL '',
对于这样的数据表,我们必须添加一行“`id`(6) NOT NULL,”。添加后,上面的代码就变成:
复制代码
表 `` (`id` (6) NOT NULL ,`` char(15) NOT NULL '',`name` char(15) NOT NULL '',`` char(100) NOT NULL '',`类型` char(15) NOT NULL '',
综上所述,TABLE语句下所有以NOT NULL结尾的行都需要插入NOT NULL和逗号之间。如果该行不是以 NOT NULL 结尾,则无论它是什么,都不需要添加它。
按 F3 继续搜索和粘贴。不到3分钟,需要添加的几十张数据表全部添加完毕。哈哈,很快就好了~~
第5步:不知道为什么,这样导出的sql文件中并没有引擎定义,也就是=这句话。我猜这也与--skip-opt有关。但我们老老少少还有双手。由于我们是菜鸟,什么都不懂,所以只能用手。 (为了提高民族素质,努力学习,天天向上还是很重要的)
pw 使用引擎。如果不加这个定义,数据库表就会成为引擎,肯定会出现未知的错误。
该定义通常添加在 TABLE 语句之外。看下面的代码:
复制代码
表 `` (`id` (6) NOT NULL ,`` char(15) NOT NULL '',`name` char(15) NOT NULL '',`` char(100) NOT NULL '',`类型` char(15) NOT NULL '', KEY (`id`)) ;
= 语句应添加在最后一个括号和分号之间,如下所示:
复制代码
表 `` (`id` (6) NOT NULL ,`` char(15) NOT NULL '',`name` char(15) NOT NULL '',`` char(100) NOT NULL '',`类型` char(15) NOT NULL '', KEY (`id`)) =;
然后在 中搜索“--data for table”。呵呵,为什么要找这个呢?搜索之后你就知道了。这是定位最后一个括号和分号的最好方法~~~~
按照这个方法,每张表都要加上=哦,别忘了~~~~
sql文件中的手动和非技术操作已经完成,继续下一步。
第6步:
在,创建数据库时,排序时一定要选择“”,否则你的工作就白费了。这一步的目的是创建字符编码GBK的数据库。就让数据库名吧,呵呵,正确的数据库~~
数据库已经创建完毕,所有准备工作都已完成,可以导入了。
第7步:
返回命令行窗口并输入命令:
c:\.0\bin> -uroot - ----set=gbk -f < .sql
没什么好说的,那个“-uroot - ----set= --set-=gbk --skip-opt > .sql
注意,我是从这里的数据库导出的,也就是我们原来的数据库。
然后打开这个sql文件并将其添加到CREAT TABLE中
复制代码
]设置名称'gbk';
,然后在最后添加一句=,相关语句如下:
复制代码
---- 表为表``--set 名称'gbk'; TABLE `` (`` (30) NOT NULL '',`` 文本非空,`` 文本非空, KEY (``)) = ;
然后删除数据库中有问题的表
然后导入:c:\.0\bin> -uroot - -f > .sql
至此,所有的问题都已经解决了,我的论坛才真正可以正常使用了。
总结一下: 1 将字符编码部分正确的数据库导出为sql文件,使用命令
2 修改sql文件,添加set名称'gbk'语句,告诉mysql导入时后面的数据是什么编码。然后添加一些pw特定的内容和说明
3.导入、发现问题、解决问题
4 将.php文件中的数据库连接修改为最新的数据库。如果需要的话,修改该文件中的mysql字符编码设置为GBK
5 完成。
最后的话:
这个字符集问题很麻烦。互联网上没有任何针对新手的教程,只要严格遵循即可成功。我研究了N多位专家写的相关资料,在这台机器上进行了N多次实验,终于成功解决了这个问题。
我一直强调这是针对初学者的教程,所以写得很详细。而且,我肯定会有更高效的方法,包括那些mysql命令的使用,也会有更高级更好的用法。但正如我所说,菜鸟就是要发现问题并解决问题,实现目标才是最重要的。毕竟,大多数论坛用户和站长都不是程序员。所以专家们请不要嘲笑我,因为这些流程很繁琐,甚至不合理。
但我绝对欢迎各位专家指出我的方法中不合理的地方并给予指点,以便我们大家共同进步~
至此,我再次呼吁pw官方能否拿出一个字符集转换的方案。毕竟数据库操作是非常危险的,我们自己来做也是不专业的。如果官方能拿出一个字符集转换程序,那一定是功德。无数的事情。即使在升级或安装密码时,最好先判断当前数据库是否为GBK编码,然后给操作人员相应的提示或解决方案。这是多么人性化啊~~
扫一扫在手机端查看
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。