python - MySQL "Warning: Data truncated for column"仅出现在某些行上,即使它们与其他行的长度相同?

标签 python mysql sql

我正在 Python 2.7 中创建查询,并使用 MySQLdb 库来执行这些查询。我正在尝试将数据从一个表插入到另一个表中,并且仅插入几行(总是相同的行,我执行了多次运行),并在某一列上出现此警告“警告:列的数据被截断”。

  • OLD 列定义为 some_column VARCHAR(255)
  • NEW 列定义为 some_other_column VARCHAR(8)

不要介意它们大小的明显差异,我尝试插入的数据始终是 8 个字符长。被截断(丢失)的数据始终只是最后一个字符。

我尝试将列设置为 VARCHAR(9),现在它可以正常工作,但这不是所需的结果,不应因不存在的问题而更改表。 .

我尝试插入但被截断的示例数据:

MOW15017

我插入的示例数据有效:

LON15023

(插入到更改为 VARCHAR(9) 的列后,直接从表中复制示例数据)

我在这里缺少什么吗?

是编码问题吗?

附加说明:直接在数据库中执行查询不会出现任何警告,使用 Python MySQLdb 我收到 8 行警告(总共 cca 1000 行)

最佳答案

经过对我的问题的评论的一些帮助后,我发现了一些对我有用的东西,但在我看来不应该真正练习......

新查询:(在旧查询中,CASE 只是长颈鹿 AS giraffe)

INSERT INTO table (column1, ...)
    SELECT CASE 
               WHEN LENGTH(giraffe) > 8
               THEN SUBSTRING(giraffe, 2, 9)
               ELSE giraffe
           END AS column1,
           ...
    FROM table2

我不喜欢,因为如果在某些情况下我可以拥有隐形的魔法第一个角色,谁能保证我不会有两个魔法隐形角色......

关于python - MySQL "Warning: Data truncated for column"仅出现在某些行上,即使它们与其他行的长度相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28646138/

相关文章:

python - 将两列串联成一轮 float

mysql - 每种类型每个裁判的前 5 行总和,所有其他行等于 1,按团队 ID 分组

php - sql语句查询计数数据

MySQL SELECT 到 VIEW 返回不同的结果

mysql - 根据日期表计算多列 - MySQL

MySQL返回不返回所有记录

python - 如何使用 django-tables2 显示图像

python - 那么,由于 Scapy 已重命名为 Kamene,我将如何导入和使用 base64_bytes?

python - 如何在不使用文件或目录的情况下在 python 中播放任何类型的声音

mysql - 如何在livecode中从手机上传图像并存储在mysql数据库中