我正在 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/