在MySQL中将JSON值设置为文本变量时出错 更新:这里是JSON代码的粘贴库。如果有人能告诉我为什么MySQL拒绝将此作为文本变量来阅读,以及如何绕过它,我将不胜感激:

在MySQL中将JSON值设置为文本变量时出错 更新:这里是JSON代码的粘贴库。如果有人能告诉我为什么MySQL拒绝将此作为文本变量来阅读,以及如何绕过它,我将不胜感激:,mysql,Mysql,我这里有一个奇怪的。在Windows上运行8.0.18。我的环境都是utf8mb4和utf8mb4\u unicode\u ci 问题是MySQL拒绝将附加的JSON文本读取到文本字段中,无论定义了什么字符集,在尝试将文本变量设置为代码时总是出现以下错误: 错误1366(HY000):第1行“json_text”列的字符串值“\x96 2019…”不正确 很明显,MySQL不喜欢文本中有一个字符,但是我应该在什么字符、什么位置以及如何“擦洗”该文本以使其被接受 这发生在尝试将JSON分配给文本值

我这里有一个奇怪的。在Windows上运行8.0.18。我的环境都是utf8mb4和utf8mb4\u unicode\u ci

问题是MySQL拒绝将附加的JSON文本读取到文本字段中,无论定义了什么字符集,在尝试将文本变量设置为代码时总是出现以下错误:

错误1366(HY000):第1行“json_text”列的字符串值“\x96 2019…”不正确

很明显,MySQL不喜欢文本中有一个字符,但是我应该在什么字符、什么位置以及如何“擦洗”该文本以使其被接受

这发生在尝试将JSON分配给文本值的行上:

set json_text= JSON_EXTRACT((injason), CONCAT('$.', 'in_JSON'));
以下是完整的代码:

DROP PROCEDURE IF EXISTS `sp_jason`;
DELIMITER //
CREATE DEFINER=`root`@`localhost` 
PROCEDURE `sp_jason`(
    IN parameterName VARCHAR(10)
)
COMMENT 'schema_version_applied_to: v1.0.0'
master_block:BEGIN
 DECLARE json_text text CHARACTER  SET latin1;
 DECLARE injason JSON;

DECLARE exit handler for SQLEXCEPTION, SQLWARNING, NOT FOUND
 BEGIN
  GET DIAGNOSTICS CONDITION 1 @sqlstate = RETURNED_SQLSTATE, 
   @errno = MYSQL_ERRNO, @text = MESSAGE_TEXT;
  SET @full_error = CONCAT("ERROR ", @errno, " (", @sqlstate, "): ", @text);
  SELECT @full_error;
 END;


 SET @hugeJason='
{
    "in_JSON": {
        "data_value": {
            "name": "Wesley Snell",
            "about": "Over 15 years of R&D development on over 30 products in various categories (automotive, medical, telecom, mobil devices, navigation, security, industrial automation, consumer products, CAD, hospitality solutions, kiosk, point of sale ...",
            "email": "wesley@qualcomm.com",
            "articles": [
                {
                    "linkURL": "https://www.linkedin.com/pulse/invitation-part-state-ai-ml-december-2019-january-2020-kiran-gunnam"
                }
            ],
            "nameLast": "Snell",
            "education": [
                {
                    "degreeName": "Master\'s degree",
                    "schoolName": "University of California, San Diego - Jacobs School of Engineering",
                    "description": "The next step in the wireless revolution is the connection of everyday devices through wireless technology. Embedded wireless technology is today exploding in nearly every market sector from personal electronics and medical devices, to the transportation infrastructure and manufacturing. ...",
                    "fieldOfStudy": "Wireless Embedded Systems",
                    "schoolImageURL": "https://media-exp1.licdn.com/dms/image/C4D0BAQHEc15VMuDaGg/company-logo_100_100/0?e=1589414400&v=beta&t=VA3iTzTB4ZBq-iYp_Fd4FYbCG-4YV7gDL47JCXaMPk4",
                    "activitiesAndSocieties": "Minor study in Digital Hardware Engineering and Business Management",
                    "datesAttendedOrGraduationString": "2017 – 2019"
                }
            ],
            "interests": [
                {
                    "title": "Ford Motor Company",
                    "imageURL": "https://media-exp1.licdn.com/dms/image/C4D0BAQGUxHv2MadZ9w/company-logo_100_100/0?e=1589414400&v=beta&t=t6v_lnhbQYiUjdGSiPBSQ89PpTMges1JsxsBQHtSfSY",
                    "occupation": null,
                    "followerCount": 2254781
                },
                {
                    "title": "Bill Gates",
                    "imageURL": "https://media-exp1.licdn.com/dms/image/C5603AQHv9IK9Ts0dFA/profile-displayphoto-shrink_100_100/0?e=1586390400&v=beta&t=oC0Mo8Qep7-PeP7TSjNEx94AbX4um89htO25XGhJZFE",
                    "occupation": "Co-chair, Bill & Melinda Gates Foundation",
                    "followerCount": 24625634
                }
            ],
            "nameFirst": "Wesley",
            "experience": [
                {
                    "roles": [
                        {
                            "jobType": "full-time",
                            "jobTitle": "Senior Staff Engineer - Machine Learning , Computer Vision & IOT (R&D Division)",
                            "location": null,
                            "currentRole": true,
                            "jobDescription": "Working on machine learning based computer vision based projects on embedded platforms. Heavy use of programming in C. Modern C++, Python and MATLAB. Heavy interaction in hardware, schematic review and inter process communications.",
                            "employmentDuration": {
                                "datesEmployedEnd": "Present",
                                "datesEmployedStart": "2019",
                                "datesEmployedString": "2019 – Present",
                                "employmentDurationYears": 1,
                                "employmentDurationString": "1 yr"
                            }
                        },
                        {
                            "jobType": "full-time",
                            "jobTitle": "Senior Staff Engineer - Android Team & Wireless Communications (Wireless R&D Division)",
                            "location": null,
                            "currentRole": true,
                            "jobDescription": "A year plus of Android software development for mobile applications with coding in Java and c++ with the NDK. ...",
                            "employmentDuration": {
                                "datesEmployedEnd": "Present",
                                "datesEmployedStart": "2019",
                                "datesEmployedString": "",
                                "employmentDurationYears": 1,
                                "employmentDurationString": "1 yr"
                            }
                        },
                        {
                            "jobType": null,
                            "jobTitle": "Senior Staff Engineer - R&D Division (Platform & Tools Lead)",
                            "location": "San Diego",
                            "currentRole": false,
                            "jobDescription": "Working on new Research and Developments projects, for state of the art products. ...",
                            "employmentDuration": {
                                "datesEmployedEnd": "Present",
                                "datesEmployedStart": "Apr 2016",
                                "datesEmployedString": "Apr 2016 – Present",
                                "employmentDurationYears": 3,
                                "employmentDurationMonths": 11,
                                "employmentDurationString": "3 yrs 11 mos"
                            }
                        }
                    ],
                    "currentJob": true,
                    "companyName": "Qualcomm",
                    "employmentDurationYears": 14,
                    "employmentDurationString": "14 yrs 7 mos"
                },
                {
                    "roles": [
                        {
                            "jobType": null,
                            "jobTitle": "President/Founder",
                            "location": "San Diego",
                            "currentRole": false,
                            "jobDescription": "Many projects in the following areas. - Internet Applications (JavaScript/ HTML/ SQL). ...",
                            "employmentDuration": {
                                "datesEmployedEnd": "Feb 2008",
                                "datesEmployedStart": "Jan 1998",
                                "datesEmployedString": "Jan 1998 – Feb 2008",
                                "employmentDurationYears": 10,
                                "employmentDurationString": "10 yrs 2 mos"
                            }
                        }
                    ],
                    "currentJob": false,
                    "companyName": "Creative Logic",
                    "employmentDurationYears": 10,
                    "employmentDurationString": "10 yrs 2 mos"
                },
                {
                    "roles": [
                        {
                            "jobType": null,
                            "jobTitle": "Principal R&D Engine",
                            "location": null,
                            "currentRole": false,
                            "jobDescription": null,
                            "employmentDuration": {
                                "datesEmployedEnd": "Dec 1999",
                                "datesEmployedStart": "Jan 1998",
                                "datesEmployedString": "Jan 1998 – Dec 1999 2 yrs",
                                "employmentDurationYears": 2,
                                "employmentDurationString": "2 yrs"
                            }
                        }
                    ],
                    "currentJob": false,
                    "companyName": "Infogation",
                    "employmentDurationYears": 10,
                    "employmentDurationString": "Jan 1998 – Dec 1999"
                }
            ],
            "nameMiddle": "",
            "profileURL": "https://www.linkedin.com/in/wesleysnell",
            "currentCompany": {
                "name": "123",
                "imageURL": "https://media-exp1.licdn.com/dms/image/C4E0BAQFIzy7XU945xg/company-logo_100_100/0?e=1589414400&v=beta&t=eIPPusNFhCPBHri11dcijhuyiSsYWJUehf_KUOFCvXQ"
            },
            "accomplishments": [
                {
                    "projects": [
                        {
                            "data": "Jun 2017",
                            "title": "Data Scientist Competition winner",
                            "issuer": "DataCamp",
                            "subTitle": "Jun 2017 DataCamp",
                            "description": "Data Scientist with Python Career Track on DataCamp"
                        },
                        {
                            "data": "Jun 2017",
                            "title": "Data Scientist Competition winner",
                            "issuer": "DataCamp",
                            "subTitle": "Jun 2017 DataCamp",
                            "description": "Data Scientist with Python Career Track on DataCamp"
                        }
                    ],
                    "honorAndAwards": [
                        {
                            "data": "Jun 2017",
                            "title": "Data Scientist Competition winner",
                            "issuer": "DataCamp",
                            "subTitle": "Jun 2017 DataCamp",
                            "description": "Data Scientist with Python Career Track on DataCamp"
                        },
                        {
                            "data": "Jun 2017",
                            "title": "Data Scientist Competition winner",
                            "issuer": "DataCamp",
                            "subTitle": "Jun 2017 DataCamp",
                            "description": "Data Scientist with Python Career Track on DataCamp"
                        }
                    ]
                }
            ],
            "currentJobTitle": "Senior Staff Engineer - Machine Learning , Computer Vision & IOT (R&D Division) at Qualcomm",
            "currentLocation": "San Diego, California",
            "profileImageURL": "https://media-exp1.licdn.com/dms/image/C4D03AQGoa2edXG6hWA/profile-displayphoto-shrink_200_200/0?e=1586390400&v=beta&t=f-Rv8pyCxIAuDRfK8g6AxkNHf-t3MGbZRfCvcOFghoY",
            "recommendations": {
                "given": [
                    {
                        "recommender": {
                            "name": "Steve Jobs",
                            "headline": "Founder Apple Inc.",
                            "relation": "October 22, 2010, Steve managed Wesley directly"
                        },
                        "recommendation": "Wes is one of the sharpest engineers I have worked with. His biggest assets are his technical versatility and engineering creativity ..."
                    },
                    {
                        "recommender": {
                            "name": "Bill Gates",
                            "headline": "Founder Windows Inc.",
                            "relation": "October 22, 2015, Bill was senior to Wesley but didn\'t manage"
                        },
                        "recommendation": "Wes is one of the sharpest engineers I have worked with. His biggest assets are his technical versatility and engineering creativity ..."
                    }
                ],
                "received": [
                    {
                        "recommender": {
                            "name": "Steve Jobs",
                            "headline": "Founder Apple Inc.",
                            "relation": "October 22, 2010, Steve managed Wesley directly"
                        },
                        "recommendation": "Wes is one of the sharpest engineers I have worked with. His biggest assets are his technical versatility and engineering creativity ..."
                    },
                    {
                        "recommender": {
                            "name": "Bill Gates",
                            "headline": "Founder Windows Inc.",
                            "relation": "October 22, 2015, Bill was senior to Wesley but didn\'t manage"
                        },
                        "recommendation": "Wes is one of the sharpest engineers I have worked with. His biggest assets are his technical versatility and engineering creativity ..."
                    }
                ],
                "givenCount": 7,
                "receivedCount": 15
            },
            "connectionDegree": 3,
            "numberOfConnections": 500,
            "volunteerExperience": [
                {
                    "cause": "Environment",
                    "companyName": "Pacific Ridge Community",
                    "description": "Community board planning member for everything in the Sorrento Valley Community. ...",
                    "designation": "Board Member (past Treasurer)",
                    "volunteerDuration": "16 yrs 2 mos",
                    "datesVolunteeredString": "Jan 2004 – Present"
                }
            ],
            "connectionDateString": "June 14, 2014",
            "skillsAndEndorsements": {
                "topSkills": [
                    {
                        "skillName": "Embedded Systems",
                        "eliteEndorsers": [
                            {
                                "name": "Sean Liming",
                                "headline": "Owner of AnnaBooks, LLC."
                            },
                            {
                                "name": "Franz Fisher",
                                "headline": "Director of NASA"
                            }
                        ],
                        "endorsementCount": 79,
                        "colleagueEndorsers": [
                            {
                                "name": "Sean Liming",
                                "headline": "Owner of AnnaBooks, LLC."
                            },
                            {
                                "name": "Franz Fisher",
                                "headline": "Director of NASA"
                            }
                        ]
                    },
                    {
                        "skillName": "Wireless",
                        "endorsementCount": 78
                    }
                ],
                "otherSkills": [
                    {
                        "skillName": "Hardware",
                        "endorsementCount": 2
                    },
                    {
                        "skillName": "USB",
                        "endorsementCount": 6
                    }
                ],
                "industrySkills": [
                    {
                        "skillName": "Mobile Devices",
                        "endorsementCount": 50
                    },
                    {
                        "skillName": "Wireless",
                        "endorsementCount": 78
                    }
                ],
                "toolsAndTechnologies": [
                    {
                        "skillName": "C++",
                        "endorsementCount": 15
                    },
                    {
                        "skillName": "Andriod",
                        "endorsementCount": 9
                    }
                ]
            },
            "licensesAndCertifications": [
                {
                    "issuedDate": "Nov 2019",
                    "Issuing authority": "Udemy",
                    "certificationName": "Certified Computer Professional (CCP)",
                    "certificationLinkURL": "https://www.udemy.com/certificate/UC-8U59W6QZ",
                    "credentialIdentifier": "Credential ID UC-8U59W6QZ"
                }
            ]
        },
        "data_state_c": 1
    },
    "in_JSON_value": "data_value",
    "in_sql_insert_1": "data_state_c,",
    "in_sql_insert_2": "1,"
}
';


set injason = cast(@hugeJason as json);
set json_text= JSON_EXTRACT((injason), CONCAT('$.', 'in_JSON'));
select json_text;


END master_block//
DELIMITER ;


call sp_jason(1);

有人知道问题出在哪里吗@刻痕你在外面吗?:)

也许这个答案会帮助你:

十六进制96可能是en破折号(–)的拉丁1编码。但是你已经指定了 如果CSV文件是utf8编码的(或utf8mb4),则utf8无法理解此字符

计划A:更改文件。(这可能不太实际。)

计划B:告诉MySQL文件是latin1(而不是utf8)。然后MySQL将其正确转换为utf8编码E28093

“排序”与排序和比较有关;“字符集”与“编码”有关


可能包含查询的文件编码不正确。

因此,我通过将文本粘贴到中解决了这个问题,这表明JSON结构良好且为绿色,但它表示“转义未转义的chracter”。可悲的是,它没有告诉我角色在哪里或是什么,更疯狂的是,'(例如\')的3个角色转义之前就已经完成了。所有这些都没有任何意义,但很明显MySQL在管理某些类型的文本时遇到了严重问题,甚至试图将该文本定义为utf8或utf8mb4,甚至拉丁语1,对这样的问题都没有影响,这是荒谬的。不幸的是,我没有从这个“修复”中学到任何东西,仍然不知道为什么会发生错误,也不知道为什么我的好友(MySQL DBA)能够在完全相同的代码导致我端错误的情况下毫无问题地运行代码;但是现在,当我通过json处理站点运行它时,它神奇地被修复了(记住,问题是将它设置为文本值,最终与json格式无关)。我在MySQL中遇到的每一个问题中,95%都与字符集或排序问题有关。我在MSSQL中从未遇到过这样的问题。我后悔选择了MySQL。

很有趣;根据您的建议,我将如何更改“文本”?如您所见,我们试图提取到的文本变量已经定义为Latin1;如果这就是问题所在,那不是解决了问题吗?或者您的意思是将核心JSON变量设置为utf8mb4的默认值以外的其他值?我该怎么做?此外,正如您所见,这不是一个文件,而是一个在存储过程本身中定义的输入“字符串”(作为JSON变量)。进一步信息,如果我将大JSON字符串设置为文本值Latin1(例如,将@hugeJason更改为var_jason(作为文本字符集Latin1)它给出了完全相同的错误,因此这肯定是字符集的问题-但最终这对我来说毫无意义。整个字符集/UTF8垃圾从来都不是MSSQL的问题。我猜您必须在@hugeJason变量转换为JSON之前更改其编码,以删除无效字符s、 文档中还说:JSON文本应该使用ascii、utf8或utf8mb4字符集进行编码。其他字符编码被隐式强制为utf8mb4。(。不过,我很高兴能够帮助您!问题是即使我将文本变量声明为字符集utf8mb4,并将该值设置为“大JSON字符串”(就像你在上面的例子中看到的)导致了错误。据我所知,MySQL根本不想“修复”字符(或编码)。我不知道如何解决这个问题。不幸的是,我无法重现这个问题,但这可能会有帮助:SET@hugeJason=SELECT CONVERT(BINARY CONVERT(@hugeJason使用拉丁语)使用utf8;()