C#使用MysqlBackup.Net 备份MySQL数据库

首先 声明这篇博文没有什么技术水平  希望各位大神口下留情

好的  咱们进入主题

开场介绍一下这个MysqlBackup.Net dll

是国外开源的作品  官方网站 https://mysqlbackupnet.codeplex.com/

我这里提供目前官方最新版本 2.0.9.2   解压缩后里面会有两个文件夹   binaries里面是类库 里面分各个.net版本    source code里面是源代码 有兴趣的同学可自行下载研究其代码

点击下载MysqlBackup.Net

因为我项目版本是4.0的  所以要引用4.0的库  当然引用2.0 和3.5也是没问题的

这里要提醒一下:MySqlBackup.dll是依赖于MySql.Data.dll的  所以引用MySqlBackup.dll的同时也要引用MySql.Data.dll

好了  我们开始调用 我们参考官方的代码实例

C#调用MySqlBackup.dll 备份Mysql数据库

  1.  1 string constring = "server=localhost;user=root;pwd=qwerty;database=test;";
     2 string file = "C:\\backup.sql";
     3 using (MySqlConnection conn = new MySqlConnection(constring))
     4 {
     5     using (MySqlCommand cmd = new MySqlCommand())
     6     {
     7         using (MySqlBackup mb = new MySqlBackup(cmd))
     8         {
     9             cmd.Connection = conn;
    10             conn.Open();
    11             mb.ExportToFile(file);
    12             conn.Close();
    13         }
    14     }
    15 }


C#调用 MySqlBackup.dll 还原Mysql数据库

 1 string constring = "server=localhost;user=root;pwd=qwerty;database=test;";
 2 string file = "C:\\backup.sql";
 3 using (MySqlConnection conn = new MySqlConnection(constring))
 4 {
 5     using (MySqlCommand cmd = new MySqlCommand())
 6     {
 7         using (MySqlBackup mb = new MySqlBackup(cmd))
 8         {
 9             cmd.Connection = conn;
10             conn.Open();
11             mb.ImportFromFile(file);
12             conn.Close();
13         }
14     }
15 }

调用看起来很简单

但是现实总比我们想象中要骨干的多

楼主在调用MySqlBackup.dll 备份Discuz数据库时 遇到了如下错误

这错误让楼主百撕不得骑姐

百度上基本查不到这个错误 只搜到一个靠谱点的  搜索关键字 [C# MySQL GUID应包含4个短划线的32位数]

http://www.cnblogs.com/end/archive/2012/12/26/2834068.html

看了这位博主的解释  没太看明白  楼主的领悟力确实不太好

于是不得不再去Google一下  关键字为[C# MySQL  Guid should contain 32 digits and 4 dashes]

搜到一个页面  截取里面比较重要的几句话  楼主英语也不是很好  大家将就着看

原页面地址 http://www.christianroessler.net/tech/2015/c-sharp-mysql-connector-guid-should-contain-32-digits-with-4-dashes.html


That error comes from the MySQL-Connector. Everything that is CHAR(36) in your database will be parsed as GUID in .NET. If there is something as ‘‘, null or something that cannot be parsed as GUID the connector throws an Exception.

See https://bugs.mysql.com/bug.php?id=60945


大概意思是这样的:

这个错误是由 MySQL-Connector引起的(MySql.Data.dll),MySQL中所有char(36)格式的字段都将被处理成.net中的GUID类型.

如果char(36)字段内容为 ‘‘ null 或者其他不能被转换成GUID类型的东东都将抛出异常.

结合刚才那位博主写的内容  貌似有些明白  大概我们知道问题出在哪了  那应该怎么解决呢 这篇文章  也提供了我们几种解决方案




We chose to declare char(36) as always containing guids. If your column
can contain nulls, I suggest you use NULL instead of ‘‘ to represent that.
If the column is not containing guids, then use char(37) or some other length.
 

Long story short: add the following to your connection-string to parse CHAR(36) as System.String and not as GUID:

old guids=true;

Here is an example MySQL.NET connection String:

server=localhost;user=root;password=abc123;database=test;old guids=true;

解决方法大概意思是这样的:

1.如果你MySQL数据库 char(36)字段内容不包含GUID建议更改char长度或者更改为其他类型

2.如果不想更改字段类型可以在链接字符串中加入  old guids=true;

根据建议在链接字符串中加入old guids=true;后 char(36)将被当做字符串来处理

重新生成 再次调试   ok  一遍通过

第一次写博文略显啰嗦   但是这里楼主想强调的是解决问题的思路.

凡事还是多琢磨  多动手 多实践 才会进步

如果有大神觉得上面言论有不妥的地方  欢迎随时拍砖

好的  今天的逼就装的这里  谢谢大家

时间: 2024-10-12 20:17:39

C#使用MysqlBackup.Net 备份MySQL数据库的相关文章

使用XtraBackup 备份MySQL数据库

本次测试使用XtraBackup备份MySQL数据库 版本:XtraBackup2.4.5+MySQL5.7.16 下载地址:https://www.percona.com/downloads/XtraBackup/ 1.安装XtraBackup 本次为了方便,使用解压版本进行安装,直接解压就可以用了. 使用过程中可能会遇到缺少perl依赖包的问题,我的方法是直接操作把镜像包里的perl都安装了,yum install -y perl* 2.简介 XtraBackup主要包括两个备份工具xtra

备份MySQL数据库的命令

这篇文章主要介绍了mysql数据库备份常用语句,包括数据库压缩备份.备份多个MySQL数据库.备份多个MySQL数据库.将数据库转移到新服务器等语句 代码如下: mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql 备份MySQL数据库为带删除表的格式 备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有数据库. 代码如下: mysqldump -–add-drop-tab

一个自动备份mysql数据库的bat文件内容

自动备份mysql数据库,并已当前的日期时间为目录 copy过去, xcopy将近15年没有用dos命令,还是这么亲切 另 本方法是备份数据库文件,不是dump导出,然后再计划任务中使用,我用的是wamp,其他的环境类似的改改即可 ====dbback.bat============ NET STOP wampapacheNET STOP wampmysqldset /a t1=(1%time:~0,2%-100)*1if %t1% LSS 10 set t1=0%t1%set ymd_hms=

Shell脚本-----自动备份Mysql数据库

脚本的整体思路 1.定义需要的变量 2.利用for循环备份需要备份的库,并以库名-当天日期.sql命名,并记录相关日志 3.建立备份当天的日期的目录,向备份的Sql文件移动到该目录 4.压缩打包该目录,以节省空间,打包成功后删除该目录 5.备份目录只备份七天的数据库,第八天删除第一天的备份,目录只会存在连续七天的备份文件 6.查找备份目录下的.log日志文件,超过七天的删除 #!/bin/bash mysql_bin=/usr/local/tdoa/mysql/bin/mysqldump use

[转]一个备份MySQL数据库的简单Shell脚本

本文翻译自 iSystemAdmin 的 <A Simple Shell Script to Backup MySQL Database> Shell脚本是我们写不同类型命令的一种脚本,这些命令在这一个文件中就可以执行.我们也可以逐一敲入命令手动执行.如果我们要使用shell脚本就必须在一开始把这些命令写到一个文本文件中,以后就可以随意反复运行这些命令了. 我首先要在本文带给你的是完整脚本.后面会对该脚本做说明.我假定你已经知道shell scripting. mysqldump和cronta

快照方式备份MySQL数据库及举例

快照方式备份MySQL数据库及举例 作者: 红豆殺 日期: 2011 年 03 月 17 日发表评论7条评论查看评论 一.创建逻辑卷 依照如下连接的文档创建一个逻辑卷 http://www.178-go.com/tags/lvm 要求:物理卷20G;卷组名为vg0;逻辑卷2G,逻辑卷名为mydata 创建逻辑卷挂载点,并挂载之 # mkdir /mydata # mount /dev/vgo/mydata /mydata 二.安装MySQL数据库 如果机器已装有mysql,则此步可省略 只需修改

批处理命令 BAT备份MySQL数据库

原文:批处理命令 BAT备份MySQL数据库 工作环境 Windows Server 2003 ,MySQL安装目录 D:\MySQL , WinRAR 安装目录 C:\Program Files\WinRAR\WinRAR.exe 备份数据存储的路径为 E:\数据备份,好了下面开始写DOS批处理命令了.代码如下: set "Ymd=%date:~,4%%date:~5,2%%date:~8,2%" md "E:\数据备份\%ymd%" "D:\MySQL

Linux下定时备份MySQL数据库的Shell脚本

Linux下定时备份MySQL数据库的Shell脚本 对任何一个已经上线的网站站点来说,数据备份都是必须的.无论版本更新还是服务器迁移,备份数据的重要性不言而喻.人工备份数据的方式不单耗费大量时间和精力,还灰常不专业的说.于是,有了下面这段脚本的出现.参考了网上的很多教程,外加自己的测试,以下脚本经测试可用.#!/bin/bash#Shell Command For Backup MySQL Database Everyday Automatically By Crontab#Author :

linux下远程备份mysql数据库

本次环境主要是远程备份mysql数据库的一种常见方法,对于其他知识不做太多讲解. 环境需求: 两台linux:一台mysql数据库服务器,另一台当作客户端用来做备份. 环境目标: 实现mysql数据库的远程备份 例子: (A为服务端ip为192.168.1.1    B为客户端ip为192.168.1.2) 1.首先你得在A上建立一个数据库(建立数据库名称我以 xianyu 为例) create database xianyu;   (建立数据库xianyu) 2.在A上建立一个数据库用户用来做