我是靠谱客的博主 隐形舞蹈,最近开发中收集的这篇文章主要介绍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数据库

string constring = "server=localhost;user=root;pwd=qwerty;database=test;";
string file = "C:\backup.sql";
using (MySqlConnection conn = new MySqlConnection(constring))
{
    using (MySqlCommand cmd = new MySqlCommand())
    {
        using (MySqlBackup mb = new MySqlBackup(cmd))
        {
            cmd.Connection = conn;
            conn.Open();
            mb.ExportToFile(file);
            conn.Close();
        }
    }
}

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

string constring = "server=localhost;user=root;pwd=qwerty;database=test;";
string file = "C:\backup.sql";
using (MySqlConnection conn = new MySqlConnection(constring))
{
    using (MySqlCommand cmd = new MySqlCommand())
    {
        using (MySqlBackup mb = new MySqlBackup(cmd))
        {
            cmd.Connection = conn;
            conn.Open();
            mb.ImportFromFile(file);
            conn.Close();
        }
    }
}

 

调用看起来很简单

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

楼主在调用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  一遍通过

 

https://www.cnblogs.com/dsnixi/p/4951241.html

最后

以上就是隐形舞蹈为你收集整理的C#使用开源作品(MysqlBackup.Net) 备份和还原MySQL数据库的全部内容,希望文章能够帮你解决C#使用开源作品(MysqlBackup.Net) 备份和还原MySQL数据库所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部