在后台发现一个功能失效了,各种检测,然后检测到可能是数据库里的某个表不小心被删了,就先备份了一下数据,google浏览器下载,替换原数据后,在替换回来,然后导入就错误.
有可能您发现了 SQL 分析器的臭虫,请仔细检查您的查询,包括引号是否正确及是否匹配。其它可能的失败原因可能由于您上传了超过引用文本区域外的二进制数据,您还可以在 MySQL 命令行界面试一下您的查询。如果可能的话,以下会列出 MySQL 服务器的错误输出,这可能对您解决问题有一定的帮助作用,如果您仍然有问题,或者命令行界面执行成功而分析器出错,请将您的 SQL 查询缩减到导致问题的某一条语句,然后和下面剪切区中的数据一起提交一个臭虫报告:
- ----开始剪切----
- ………………(各种字符)
- ----结束剪切----
- ----开始原文---
- ………………(各种乱码)
在然后,就各种baidu、google、sougou。。。没找到解决办法。
记得过去搭建DZ站时也遇到这种问题。当时,就是无意的在导入时随便点了编码选择某项就导入进去。。可这次行不通,纠结。。再次百度看看有没有类似的修复软件。没找到= =#。 用Notepad++打开sql看看,没乱码,比较可以导入的sql文件。高版本的都可以导入,低版本应该不是问题,格式也没错。按照以往对这些上传文件思路。
在本地mysql里尝试导入.
先改下名字,上传看看。。发现没报上面的错误了!!!不过还是有 一行错误提示(英语也懒的去翻译了)。
然后重压缩在导入。。!!!OK,本地的mysql可以导入了。
去导入空间里的mysql.
压缩了的SQL还是报上面的哪个上面 臭虫 错误。我去。。。解压后上传,只导入了多说的表,外加 一行错误提示。太坑了,不懂。
索性本地上已经导入完整,再次从本地的mysql里导出,在上传。。解决。
总结:看数据库内容是否完整且是否乱码(如果是,基本上就没救了= =)。
本地搭建phpmyadmin尝试导入(我用的是phpStudy绿色版的),在然后各种主流、非主流思路。(编码转换、版本比较、格式比较……),(我是改文件名后压缩本地mysql,在然后导出本地,在导入到空间,貌似有运气成分,呵呵。)
百度上说,可以用mysql自带的修复工具,尝试修复下,我数据库格式和内容都完整,且也懒得去装,就没有尝试了.在也不用phpmyadmin来备份了.
注意以下事项:mysql编码:
在mysql的安装目录,如:E:\Program Files\MySQL\MySQL Server 5.0\my.ini,可以找到mysql库的编码,大部分情况下,可以设置为uft-8: default-character-set=utf8 或gbk:default-character-set=gbk
编码不对,就会造成无法导入.修改编码后要重启数据库才会生效.
1.条件:在同一台服务器,mysql数据库可以用平台的导出导入功能正常备份及还原.
2.条件:不同服务器上,在my.ini编码一致的情况下,mysql数据库可以用平台的导出导入功能正常备份及还原.
2.条件:不同服务器上,在my.ini编码不一致的情况下,必须修改my.ini成为一致的编码,mysql数据库才可以用平台的导出导入功能正常备份及还原.
3.对于用phpmyadmin或其他工具导入的文件,您需要再次加工后,才能用平台的导入功能:以phpmyadmin为例,导出后,将生成的SQL语句另存为一个.sql文件,然后,用记事本修改它:
(1)找到CREATE DATABASE开头的这一行如:
CREATE DATABASE `数据库名` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;
在前面加上--符号,取消这行的运行权(原因是导入时是用普通用户角度导入,不允许建立数据库)这样,才有可能用平台的导入功能导入.
(2)然后,您可以看看这个库的编码是否和您服务器上的一致,如果编码不一致,那么,
<1>要么用phpmymyadmin重新备份成编码一致的.sql文件才能导入.(在phpmyadmin登陆的首页可以选编码)
<2>要么是修改my.ini中的编码,并重启Mysql才能导入(重启Mysql可以在服务器上,管理工具,服务管理中重启),这种方式成功机会高一些,建议这样操作.
一、数据库的导出
一般而言,数据库的导出是为了备份或者为了数据库的移置。那么导出时我们一般选择SQL或者Excel,而不选择Word,PDF等。导出时选择要导出的表或者所有表。选项选择时要注意,要选择没有必要的选项,如果选择了其他选项会给数据库入库带来麻烦或错误。那么到底选择什么呢?
在结构选项(structure)选项中,我们一般使用Add if not exists,Add auto_increment value,Enclose table and field names with backquotes(使用中文相应地翻译成汉字就成),也就是在选项的前面框内打勾(你不会告诉我这个你不会吧),在数据(data)选项中选择 Complete inserts,Extended inserts,Use hexadecimal for BLOB,Export type 为Insert,当然如果你是为了更新或替换可选择UPDATE或replace。当Save as file前打勾时,会自动存为文件(推荐),然后按Go,这样数据库就存为zip,gzip或bzip格式了。
二、数据库的导入
尤其要注意的是,我在数据库的导入时先建好了与导出数据库同名的一个空数据库(没 有表的)才能导入,否则经常报错。建好了数据库后点击相应数据库进入(当然要在phpMyAdmin环境下了),这时我们再点击Import按纽,忘记说 了,如果你选择的是压缩的导出结果,最好先解压成一个文件形式,虽然phpMyAdmin说可以识别压缩文件(Imported file compression will be automatically detected from: 无, gzip, zip),其实还是识别不了的:<),不然,phpMyAdmin会告诉你发现了臭虫(真有臭虫倒好),字符集选择与导出时一样,默认utf8,然 后点击Go或执行就OK了,这样数据库就移到了另一个地方,同时也方便你移站了. |