遇到问题---mysql数据导入--cannot create a json value from a string with character set 'binary'

情况

我们在进行mysql 5.7的数据导出导入时遇到问题cannot create a json value from a string with character set ‘binary’。

原因

网上查了一些资料都不是说的很清楚,但是也给了一些线索。
问题聚焦到Json类型的数据上。
Json是mysql 5.7版本才新增的数据类型。
很多旧版本的驱动是不支持的,包括比如我们自己使用的java驱动包或者一些市面上的mysql-front等mysql客户端工具所使用的驱动。
我这里使用的就是mysql-front最新版6.0导出的,但是还是识别不到json类型,把json类型当成string类型导出了。
所以在导入时就会报错。

解决方法

我们有两种解决方法

一使用最新版的workbench导出再导入

因为workbench是mysql官方推出的工具,所以最新版是能支持5,7的json数据类型的。
我这里下载安装了6.3版本的workbench。
重新从workbench中导出sql文件再通过workbench远程连接到需要导入的数据库,导入成功。
注意:必须使用workbench重新导出一遍sql文件,这样导出才是经过最新的驱动的处理的数据类型,如果用其他不支持json数据类型的工具导出的sql文件,就算使用最新的workbench进行远程连接导入还是会报错:cannot create a json value from a string with character set ‘binary’。

二在mysql5.7的命令行中导出再导入

因为mysql5.7本身命令行就提供了导入导出功能,通过命令行本身进行导入导出 经过的是mysql5.7原生的驱动,肯定没问题。

其中用戶名为root,密码为dbpasswd,生成的脚本名为db.sql,不加目录时生成在当前路径
导出数据库为dbname所有表的结构和数据

mysqldump -u root -p passwd  dbname >/home/zzq/db.sql;

导出数据库为dbname某张表(test)的结构和数据

mysqldump -u root -p passwd  dbname test>/home/zzq/db.sql;

在以上命令的基础上增加:
-d 导出结构不导出数据
-t 导出数据不导出结构

导入数据到数据库

mysql -u root -p passwd  dbname < db.sql

导入表数据到数据表test

mysql -u root -p passwd  dbname test< dbtest.sql

或者

把在本地生成好的.sql文件导入到服务器的某个目录,如: /usr/local/test.sql;
在服务器数据库中执行命令:

mysql -h ip -P 3306 -u root -p
use dbname;
source /usr/local/test.sql;

猜你喜欢

转载自blog.csdn.net/q383965374/article/details/80282869
今日推荐