gpt4 book ai didi

python - 尝试通过 Python 和文本文件将字符串插入 MySQL 时出现 “Incorrect string value”

转载 作者:太空宇宙 更新时间:2023-11-03 10:40:14 25 4
gpt4 key购买 nike

是什么导致了这个不正确的字符串?我已经阅读了很多问题和答案,这是我的结果。阅读答案后我仍然遇到同样的错误。

我收到以下错误: ojit_代码

当我尝试在 SQL 中输入以下内容时:行号 34373:ERROR 1366 (HY000) at line 34373: Incorrect string value: '\xEF\xBB\xBF<?x...' for column 'change' at row 1

我的表格是这样的:

DROP TABLE IF EXISTS `gitlog_changes`;
CREATE TABLE `gitlog_changes` (
`hashID` varchar(40) NOT NULL,
`filename` varchar(450) DEFAULT NULL,
`change` mediumtext
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

我读了很多答案,说将字符集更改为 UTF8 [1] [2] [3] [4] 。所以我执行这个: ojit_代码

我继续得到同样的错误。然后我INSERT INTO gitlog_changes VALUES ('123456', 'NhincCommonEntity.xsd', '<?xml version=\"1.0\" encoding=\"UTF-8\"?>');

还是出现同样的错误。

我还尝试从 python 读取文件并直接提交到数据库。从这个答案 [1] 。我收到警告而不是错误。

我将以下代码插入到我的 python 脚本中:

    cursor.execute("SET NAMES 'utf8'")
cursor.execute("SET CHARACTER SET utf8")

Python 脚本:

def insert_changes(modList):
db = MySQLdb.connect("localhost", "user", "password", "table")
cursor = db.cursor()

cursor.execute("SET NAMES 'utf8'")
cursor.execute("SET CHARACTER SET utf8")

for mod in modList:
hashID = mod["hashID"]
fileName = mod["fileName"]
change = mod["change"]

cursor.execute("INSERT INTO gitlog_changes VALUES (%s, %s, %s" , (hashID, fileName, change))
# # disconnect from server
db.commit()
db.close()

我在这里得到的警告是:alter table yourTableName DEFAULT CHARACTER SET utf8;

最佳答案

您尝试插入数据库的字符串的开头有一个不寻常的字符。我刚刚复制了你的字符串:

In [1]: a = '<'

In [2]: a
Out[2]: '\xef\xbb\xbf<'

你需要去掉那些字符。 This是解释这些字符是什么的好帖子。

关于python - 尝试通过 Python 和文本文件将字符串插入 MySQL 时出现 “Incorrect string value”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39862121/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com