MySQL 5.7.12 导入无法从字符集“二进制”的字符串创建 JSON 值

作者:编程家 分类: mysql 时间:2025-05-31

MySQL是一个广泛使用的关系型数据库管理系统,它支持多种数据类型和功能。其中一个新特性是在MySQL 5.7.12版本中引入的JSON数据类型,它使得存储和查询JSON格式的数据变得更加方便。然而,有时候在导入数据时,我们可能会遇到一个错误:“无法从字符集“二进制”的字符串创建JSON值”。

这个错误通常是由于导入的数据中包含无效的JSON格式导致的。为了解决这个问题,我们需要对导入的数据进行一些处理和转换。

案例代码:

假设我们有一个JSON格式的文件,名为data.json,内容如下:

json

{"name": "John", "age": 25, "email": "john@example.com"}

{"name": "Alice", "age": 30, "email": "alice@example.com"}

{"name": "Bob", "age": 35, "email": "bob@example.com"}

我们想要将这些数据导入到MySQL数据库中的一个JSON类型的字段中。我们可以使用LOAD DATA INFILE语句将数据导入MySQL。然而,当我们尝试导入时,可能会遇到上述错误。

为了解决这个问题,我们可以使用MySQL的内置函数JSON_VALID()来验证JSON格式的数据。我们可以在导入之前先对数据进行验证,然后将有效的数据导入数据库。

下面是一个示例代码,展示了如何使用JSON_VALID()函数进行数据验证和导入:

sql

CREATE TABLE users (

id INT PRIMARY KEY AUTO_INCREMENT,

data JSON

);

LOAD DATA INFILE 'data.json'

INTO TABLE users

LINES TERMINATED BY '\n'

(@data)

SET data = IF(JSON_VALID(@data), @data, NULL);

在上面的代码中,我们创建了一个名为users的表,其中包含一个自增的id字段和一个JSON类型的data字段。然后,我们使用LOAD DATA INFILE语句将data.json文件中的数据导入到users表中。在导入时,我们使用了一个变量@data来存储每行的数据,并使用JSON_VALID()函数对数据进行验证。如果数据有效,我们将其存储到data字段中,否则将其设置为NULL。

使用上述代码,我们可以成功地将JSON格式的数据导入到MySQL数据库中,而不会遇到“无法从字符集“二进制”的字符串创建JSON值”的错误。

解决“无法从字符集“二进制”的字符串创建JSON值”的问题

在导入JSON数据时遇到“无法从字符集“二进制”的字符串创建JSON值”的错误可能会导致一些困扰。然而,通过使用MySQL的内置函数JSON_VALID()来验证数据,并进行适当的处理,我们可以轻松地解决这个问题。

MySQL的JSON数据类型为存储和查询JSON格式的数据提供了便利。然而,在导入JSON数据时,我们可能会遇到“无法从字符集“二进制”的字符串创建JSON值”的错误。通过使用JSON_VALID()函数进行数据验证,并进行适当的处理,我们可以成功地导入JSON数据,而不会遇到这个错误。

参考资料:

- MySQL官方文档:https://dev.mysql.com/doc/refman/5.7/en/json.html