关于将.sql文件导入mysql数据库,以及过程中遇到的Incorrect string value 问题
将.sql文件导入mysql数据库,并运行其中的sql语句是我们经常要进行的工作,但在这个过程中我们常常会遇到很多问题,其中最常见的就是Incorrect string value问题。
本文记录一种可能的出错原因及其对应的解决方法。
首先我们要将.sql文件导入数据库,必须先进入mysql,并创建一个数据库。
一、进入mysql
mysql -u root -p
输入密码后进入mysql。
二、创建一个数据库并进入这个数据库
create database nlp2; -- nlp1是数据库名称
use nlp2;
进入数据库后,就可以在其中运行命令,进行相关的操作了。
但如果要将一个.sql文件导入到新建的数据库中,该如何做呢?
例如,我们要将一个doc.sql文件导入到nlp2数据库中。
发现这个文件中并没有建表语句,因此要想导入这个文件,必须现在对应的数据库中先建表。
指定默认字符集为utf8。
再运行如下命令将.sql文件导入到数据库nlp2中:
mysql -u root -p nlp2 < D:/pythonProject/sql/doc.sql
回车输入密码运行后发现抱错:
也就是Incorrect string value错误。
查了很多资料,最终发现是编码问题
运行如下命令查看数据库中表的基本信息
show create table doc;
结果如下:
发现字符集为utf8mb3,我们再在cmd中运行命令查看doc.sql的编码格式:
发现编码格式与表的字符集不相符,因此运行命令修改文件编码格式为utf8:
chcp 65001
再次查看文件编码,发现修改成功:
再次将.sql文件导入到数据库中,发现导入成功。