MySQL报错总结
1,报错:System.NotSupportedException: Character set 'utf8mb3' is not supported by .Net Framework.
【尝试1】从官网下载MySql.Data.dll(8.0.24),结论:还是一样的报错
下载地址:https://dev.mysql.com/downloads/
下载解压后
重新引用这个8.0.24的DLL还是报错
【尝试2】从NuGet上下载MySql.Data.dll(8.0.31),问题解决。
2,类型'System.Int32的'的对象不能转换为类型'System.UInt32
C#中的属性:public uint CycleNo { get; set; }
MySql中的字段:`CycleNo` int unsigned NULL,
【unit】<-->【 int unsigned】
3,C#连接报错:Retrieval of the RSA public key is not enabled for insecure connections
【尝试1】打开MySql workbrench,连接上数据库后,再打开C#程序连接就不报错啦。关闭MySql workbrench客户端后也不报错了
【尝试2】用字符串A,连上不报错。然后再切换到A,也不报错。这很奇怪,不知道为啥?
连接字符串A
"Database=db_VAS; Data Source=localhost;User Id=root;Password=123456;pooling = false; CharSet = utf8 ;port =3306;SSL Mode=None"
连接字符串B(加了allowPublicKeyRetrieval=true)
"Database=db_VAS; Data Source=localhost;User Id=root;Password=123456;pooling = false; CharSet = utf8 ;port =3306;SSL Mode=None;allowPublicKeyRetrieval=true"
百度笔记:
如果用户使用了 sha256_password 认证,密码在传输过程中必须使用 TLS 协议保护,但是如果 RSA 公钥不可用,可以使用服务器提供的公钥;可以在连接中通过 ServerRSAPublicKeyFile 指定服务器的 RSA 公钥,或者AllowPublicKeyRetrieval=True参数以允许客户端从服务器获取公钥;但是需要注意的是 AllowPublicKeyRetrieval=True可能会导致恶意的代理通过中间人攻击(MITM)获取到明文密码,所以默认是关闭的,必须显式开启。
所以可以用mysql_native_password,不要用sha256_password方式,就不会有问题了。
在链接的后面添加参数allowPublicKeyRetrieval=true即可。
3,初始化SqlSugarClient报错:给定关键字不在字典中。DbType="MySql";ConfigId=""
ConnectionConfig connectionConfig = new ConnectionConfig() { //注意要填写需要创建的数据库名称 //ConnectionString = "Data Source=KDE49AE3P78OP7D;Initial Catalog=HolyBoltSystemDB_New;User ID=sa;Password=123",//sqlserver ConnectionString = "Database = HolyBoltSystemDB; Data Source = localhost; User Id = root;Password=123456;pooling = false; CharSet = utf8 ;port =3306;SSL Mode=None;allowPublicKeyRetrieval=true",//mysql IsAutoCloseConnection = true, DbType = DbType.MySql }; //SqlSugarClient:链接数据库的对象 using (SqlSugarClient db = new SqlSugarClient(connectionConfig))//这里报错“...给定关键字不在字典中。DbType="MySql";ConfigId=""...” { //如果不存在则创建数据,存在则不会重复创建 { db.DbMaintenance.CreateDatabase();//注意:Oracle和个别国产的不支持该方法 } //根据实体类创建表 { db.CodeFirst.InitTables(typeof(TighteningResult)); } //设置默认的字符串长度 { db.CodeFirst.SetStringDefaultLength(200).InitTables(typeof(TighteningResult)); } //创建多个表 { db.CodeFirst.SetStringDefaultLength(200).InitTables(typeof(TighteningResult),typeof(SysAdmin),typeof(SysAdmin1)); } //批量创建表,根据dll里面所有的实体类创建 //动态设置表名 { db.CodeFirst.As<SysAdmin>("SysAdmin1").InitTables<SysAdmin>(); db.CodeFirst.As<SysAdmin>("SysAdmin2").InitTables<SysAdmin>(); db.CodeFirst.As<SysAdmin>("SysAdmin3").InitTables<SysAdmin>(); db.CodeFirst.As<SysAdmin>("SysAdmin4").InitTables<SysAdmin>(); db.CodeFirst.As<SysAdmin>("SysAdmin5").InitTables<SysAdmin>(); } }
最终解决:版本匹配问题,换成MySql.Data.dll-8.0.31.0 和SqlSugar-8.0.31.0,问题解决
4,MySQL服务正在启动或停止中
管理员运行cmd
tasklist|findstr "mysql"
taskkill /f /t /im mysqld.exe
就正常可以启动了
Microsoft Windows [版本 10.0.22621.1555] (c) Microsoft Corporation。保留所有权利。 C:\Windows\System32>tasklist|findstr "mysql" mysqld.exe 16524 Services 0 8,296 K mysqld.exe 13148 Services 0 45,540 K C:\Windows\System32>taskkill /f /t /im mysqld.exe 成功: 已终止 PID 20208 (属于 PID 13148 子进程)的进程。 成功: 已终止 PID 13148 (属于 PID 16524 子进程)的进程。 成功: 已终止 PID 16524 (属于 PID 1288 子进程)的进程。 C:\Windows\System32>tasklist|findstr "mysql" mysqld.exe 21268 Services 0 36,432 K mysqld.exe 11324 Services 0 388,604 K C:\Windows\System32>
5,中文提示 : 连接数据库过程中发生错误,检查服务器是否正常连接字符串是否正确,错误信息:Got timeout reading communication packetsDbType="MySql";ConfigId="".
English Message : Connection open error . Got timeout reading communication packetsDbType="MySql";ConfigId=""
6,AtlasPfTightening-ReadInitialStartTighteningIDFromConfig-Error:Fatal error encountered during command execution.
7,AtlasPfTightening-ReadInitialStartTighteningIDFromConfig-Error:中文提示 : 连接数据库过程中发生错误,检查服务器是否正常连接字符串是否正确,错误信息:Unable to connect to any of the specified MySQL hosts.DbType="MySql";ConfigId="".
English Message : Connection open error . Unable to connect to any of the specified MySQL hosts.DbType="MySql";ConfigId=""