MySQL“Warning:Data truncated for column”只对某些行显示,即使它们与其他行的长度相同?

2024-10-01 07:28:06 发布

您现在位置:Python中文网/ 问答频道 /正文

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

  • 旧列定义为某些列VARCHAR(255)
  • 新列定义为某个其他列VARCHAR(8)

别管它们的大小有什么明显的差别,我要插入的数据总是8个字符长。被截断(丢失)的数据总是最后一个字符。在

我试图将column设置为VARCHAR(9),现在它可以工作了,但这不是期望的结果,表不应该因为不存在的问题而更改。。。在

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

MOW15017

我插入的示例数据有效:

^{pr2}$

(在insert into column更改为VARCHAR(9)之后,直接从表复制示例数据)

我有什么遗漏吗?在

是编码问题吗?在

附加说明:直接在数据库中执行查询没有任何警告,使用pythonmysqldb我得到8行警告(共cca 1000行)


Tags: 数据警告示例编码定义column字符insert
1条回答
网友
1楼 · 发布于 2024-10-01 07:28:06

在对我的问题的评论中得到一些帮助之后,我发现了一些对我有用的东西,但我不应该真正练习。。。

新的疑问:(在旧的一个,而不是案件只是长颈鹿作为长颈鹿)

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

我不喜欢因为如果有情况下我可以有隐形魔法第一个角色,谁保证我不会有2个魔法隐形人物。。。

相关问题 更多 >