c#使用mysql作为数据库的各种坑

安装Mysql的坑

ERROR 1146 (42S02): Table ‘mysql.role_edges’ doesn’t exist

用Mysql 8.0版本的会出这个问题,先强制你修改密码,然后修改密码过程中又出现这个错误,网上很多人说可以mysql_upgrade来修复系统表:

>mysql_upgrade -u root -p 

然而我的情况是,没有修改密码就无法升级表.这就陷入了一个死锁. 修复表->需要修改密码->缺少mysql.role_edges->需要修复表.

所以决定弃坑装mysql低版本

将mysql卸载干净

  1. 卸载mysql

    yum erase mysql
    
  2. 清除rpm包

    rpm -aq | grep mysql //查看还有哪些rpm包
    rpm -e packages  //一个个删干净
    
  3. 清除系统中的残留

    find / -name mysql 
    rm -rf <directory>
    

安装低版本mysql

  1. Download and add the repository, then update.

    wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
    sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm
    yum update
    
  2. Install MySQL as usual and start the service. During installation, you will be asked if you want to accept the results from the .rpm file’s GPG verification. If no error or mismatch occurs, enter y.

    sudo yum install mysql-server
    sudo systemctl start mysqld
    
  3. Change default password

    sudo mysql_secure_installation
    

C#中使用mysql

MySql.Data.MySqlClient.MySqlException (0x80004005): The host 127.0.0.1 does not support SSL connecti

原因是MySQL的dll不匹配 建议不要使用NuGet推荐的DLL 要使用MySQL自带的DLL导入即可解决.
根据本身服务器上的mysql版本来选择connector的版本,可以直接在NuGet包中选择版本第一点的包

本人代码如下 ``` CommonFormService.updateScore(transaction, userid, kindid, score, righttime, maxConright, maxConWrong, successRate, equispaced, nowConrightWrong, qishu, sellid); ``` 在整个方法中多次调用此段代码,只是其中参数不同。updateScore方法代码如下 ``` public static void updateScore(Transaction transaction, string userid, string kindid, int score, int righttime, int maxConRight, int maxConWrong, int successRight, int epaced, int nowRightWorng, int qishu, string sellid) {//`uId` int,`kId` int,`scre` int,`rTime` int,`mConRight` datetime,`maxWorng` int, //`sRate` int,`epaced` int,`nowRightWorng` int,`sllID` int,`qs` int try { string sql = "select InsertScore(" + userid + "," + kindid + "," + score + "," + righttime + "," + maxConRight + "," + maxConWrong + "," + successRight + "," + epaced + "," + nowRightWorng + "," + sellid + "," + qishu + ") "; DataOperater.Sql_FillDataTabelMysql(transaction,sql); } catch (Exception e) { } } ``` 如上述代码所示并没有对任何数据有特殊处理,只要数据类型正确即可更新数据库,但是待执行的时候差不多调用了30多次updateScore这个方法 ,其他的都没问题,但是其中一次updateScore里的 sql=" select InsertScore(16,37,11,8,6,1,80,0,1,0,10)"的时候虽然VS提示操作成功,去查询数据库的时候数据没有更新进去,数据不能正常跟新到数据库中,但是当吧 select InsertScore(16,37,11,8,6,1,80,0,1,0,10)这个写到另一个小的C#程序中时执行却成功了,并且把它复制到navicat里面执行也没有问题,请问这是怎么回事啊?以前碰上的问题还可以找到一些错误提示,但是现在这个问题,连个错误提示都找不到 ,感觉很诡异。有大神遇到过这样的问题吗?求助~~~
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页