上次用完mysql就给卸载了,今天刚重新安装了一个,下载的安装包和版本为mysql-installer-community-8.0.21.0,应该是比我上次用的新;unity版本为2019.3.0f6;
首先准备一个unity项目用来连接数据库,下面一步就是:
往项目assets文件夹中放入一些dll文件,上次在这一步稀里糊涂的,哪些必须哪些不必也没搞清楚,我在Assets下建了一个Plugins文件夹存这些放进来的dll
其中MySql.Data来自你的mysql安装目录,我的是C:\Program Files (x86)\MySQL\Connector NET 8.0\Assemblies\v4.5.2 这里面,直接复制进去,
【注意,版本号要注意,这次我下载的比较新的mysql这个复制到项目中在unity里显示的,最下面那个Assembly Info里是Targets .NET 4.x,对于我的这个unity是不能使用的,控制台一直会报两个关于mysql.data的错,我把以前项目里的拿过来放到现在正在用的这个项目之后是3.5的,是可以用的】
第二个遇到的新问题是,这么一个错误:Client does not support authentication protocol requested by server,直接去搜发现遇到这个问题的基本都是navicat 连接 mysql的时候,大概原因是因为mysql8.0的密码加密规则改了,这我也能理解为什么是这次出现的新问题了,我新安装的就是8.0的,解决方案是,打开mysql控制台,输入这么3句话
use mysql;
alter user '用户名'@'主机名' identified with mysql_native_password by '你的密码';
flush privileges;
别忘记分号;
第三个遇到的新问题报的错是:the given key was not present in the dictionary,我是用的插入语句,字面意思大概是插入是使用的关键字在表里没有,可是明明写的是对的,
解决方案:在数据库连接字符串最后规定一下字符编码格式
string constr = "server=localhost;Database=mydb;User Id=root;password=12345;charset=utf8;";
即在最后加一句charset=utf8,问题可以解决。
2020年7月16日13点18分