未知错误 3140 JSON 文本无效:"Invalid value."位置 0,但对于 NULL 列


SQLSTATE[22032]: <<Unknown error>>: 3140 Invalid JSON text: "Invalid value." at position 0 in value for column 'form_fields.options'. (SQL: INSERT INTO `form_fields` VALUES (1, 'first_name', 'First Name', 6, 1, 'text', NULL, 'string', NULL, NULL, NULL, '2019-05-28 16:44:08', '2019-05-28 16:44:08', NULL);)

这个查询中的CCD_ 1列是CCD_;无效值";位置0出错。

目前,该列中有大量NULL值,并且该列被定义为可为NULL。

我实际上只是从一个数据库中转储一个表,并试图在另一个相同的数据库上运行插入来为它播种

表格结构:

CREATE TABLE `form_fields` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`label` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`required` tinyint(1) NOT NULL DEFAULT '0',
`type` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`subtext` text COLLATE utf8mb4_unicode_ci,
`validations` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`options` json DEFAULT NULL,
`html_attributes` json DEFAULT NULL,
`display_width` int(11) NOT NULL DEFAULT '12',
`gender` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL,
`deleted_at` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `form_fields_name_index` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

在表定义中,options是第8列,但插入的第8个值不是NULL,而是'string'。其他人也不匹配。第5列是VARCHAR,但第5个值是一个数字。

请尝试枚举插入中的列名,以确保使用了正确的列顺序。

INSERT INTO table(col1, col2 ...) VALUES ('val1', 2, NULL, ...)

请求:

INSERT INTO `messages`(`data`, `only_text_msg`, `media_group_id`, `media_group_json`, `forward_date`) VALUES ('1','None','secret_id','{'media': ['media_id']}','2022-03-27 12:09:37')

问题是在数据库json单元格中,需要用双括号">也就是说,json本身需要封装在这样的函数中:

*Python

def json_to_string(json):
js = str(json)
ret_str = ""
for i in js:
f = ""
if i == """ or i == "'":
if i == "'":
i = """
f = "\"
ret_str += f+i
return ret_str

还有一些代码:

lol = {
"asda" : '2w',
1 : 32,
'2' : 22
}
import json
print(json.dumps(lol))

{"asda":"2w","1":32,"2":22}

最新更新