起初,做一个图书馆系统建了个MySQL数据库,要往表中写入字符的时候写不进去,查询资料改my.ini配置文件中的mysqlId下加两句字符集有关的。
加了这两句后重启MySQL服务,发现MySQL服务开启不了。(早上6点醒来就开始想怎么解决)
于是在ProgramData中根据搜索的情况,各种操作,包括删Data文件夹齐平的三个文件等。无效。
最后,第二天早上想着引起这个变化的就是在my.ini配置文件中的mysqlId下加两句字符集有关的,就把那两句字符集有关的配置语言删除,竟然可以重启MySQL服务。
这时候,我打开navicat中之前建的数据库,里面的数据表打不开了,要删除这个建的数据库也删除不了、1045的错误。
于是我只能去C盘ProgramData的Data文件夹中把之前建的数据库删除,因为其中的数据表已经打不开,只能删除重建。重建的数据库是可以操作使用的。
这个对数据库不能操作的原因,可能是之前建的数据库数据文件已经通过我的一次备份,然后替换发生了改变,然后打不开。
教训就是:
1、C盘ProgramData的MySQL的Data文件夹不要轻易改变、移动、替换。
2、MySQL的配置文件my.ini谨慎改动。改动之前一定记得要备份原始的my.ini。
将近两三个小时的折腾,收获就是对MySQL数据库更加熟悉。不过,存不了字符还是个问题啊,要继续解决。
找到原因了,往MySQL数据库中写入字符(英文、中文),也就是字段的格式为char、vachar,都要加单引号。
插入语句如下:
//sql语句
string sql = "insert into bookinfo (bookname, booktype, bookauthor, bookprice, bookpic, bookcontent, bookissue)"
+ " values ('" + strBookName + "', '" + strBookType + "', '" + strAuthor + "', '" + strPrice + "', '" +
strPic + "', '" + strContent + "', '" + strIssue + "');";