【问题标题】:My Sql error occured data too long in rowMysql错误发生数据太长的行
【发布时间】:2021-08-09 13:59:44
【问题描述】:
Code:

import mysql.connector as MYSQL
from bs4 import BeautifulSoup
import requests

URL = 'https://parade.com/937586/parade/life-quotes/'
SQL = 'INSERT INTO quoteslist (id, Quotes) VALUES (%s,%s)'

CONFIG = {
    'user': 'root',
    'password': 'Demon@',
    'host': '127.0.0.1',
    'database': 'my_quotes',
    'charset': 'utf8mb4'
}
SELECT = 'span[data-parade-type="promoarea"] .figure_block ~ p'
GT = {'strip': True, 'separator': ' '}
with requests.Session() as session:
    web_page = session.get(URL)
    web_page.raise_for_status()
    soup = BeautifulSoup(web_page.text, "html.parser")
    quote = [(x.get_text(**GT)) for x in soup.select(SELECT)]
    with MYSQL.Connect(**CONFIG) as db:
        mycursor = db.cursor()
        for q in quote:
            idx = q.split()[0]
            if idx[0].isdigit():
                text = q[len(idx):].strip()
                params = (idx.replace('.', ''), text)
                mycursor.execute(SQL, params)
        db.commit()

输出错误:

line 29, in <module>  mycursor.execute(SQL, params)
mysql.connector.errors.DataError: 1406 (22001): Data too long for column 'Quotes' at row 
1

我尝试在 URL 中插入所有 150 个引号的数据,在第 1 行中获取错误数据太长。 我对那个错误没有这么深的想法。谁能告诉我如何纠正错误?

【问题讨论】:

标签: python mysql beautifulsoup


【解决方案1】:

您可能正在为quoteslist.Quotes 使用VARCHAR(255) 类型,并且遇到超过255 个字符的行。特别是,您会注意到在您链接的网站上,在第 59 行中,引用的长度超过了 275 个字符。这不适合 VARCHAR(255) 列,这就是您的数据库引擎所抱怨的。

它说“第 1 行”中的数据太长的事实是无关紧要的 - 这只是意味着问题出在您尝试 INSERT 的第一行(共 1 行)。 SQL 允许您在单个命令中插入多行,如果其中任何一行不起作用,则它们都无法添加,这就是此消息有用的原因。

CREATE TABLE test (val VARCHAR(5));
INSERT INTO test VALUES ("123"), ("12345"), ("1234567");
-- Data too long for column 'val' at row 3

要真正解决这个问题,您可以升级您的 Quotesto a TEXT type,它适合 65535 字节。如果这还不够,您可以选择TEXT and BLOB types,其中最大的包含 4294967295 或 2**32-1 字节——您将很难超过该限制,但如果您这样做,您将必须跨多个列存储数据。

【讨论】:

    猜你喜欢
    • 2013-04-03
    • 2011-02-03
    • 2015-03-05
    • 2019-02-07
    • 1970-01-01
    • 1970-01-01
    • 2016-06-07
    • 2018-10-19
    • 2016-08-09
    相关资源
    最近更新 更多