gpt4 book ai didi

mysql - #1265 - 列 MYSQL 5.7 的数据被截断

转载 作者:行者123 更新时间:2023-11-30 22:13:11 27 4
gpt4 key购买 nike

在我将我的服务器升级到 PHP7 和 MySQL 5.7 之后,我收到一个错误查询:

UPDATE user SET user_rank_points = (@i := (@i + 1))

错误是:#1265 - 第 1 行“user_rank_points”列的数据被截断

有人有解决办法吗?

最佳答案

随着人们升级到 MySQL 5.7,这类问题将会出现很多。此版本的 MySQL 使严格 SQL 模式成为默认模式,这与早期版本中严格模式是一个选项不同。

在没有严格模式的情况下,当您尝试将 32768 之类的值存储到 SMALLINT 中时,它会默默地将该值截断为 32767,这是您可以存储的最大值一个带符号的 16 位整数。

您是否希望 MySQL 更改您尝试存储的数据?如果是这样,您可以更改 sql_mode 以删除严格模式,所有超过 215-1 的值都将被截断为该值。在此处了解如何执行此操作:http://dev.mysql.com/doc/refman/5.7/en/sql-mode.html

或者您更喜欢它存储更大的整数值?如果是这样,请将您的列更改为 INT

或者当您的 @i 超过 215-1 时,您更喜欢它引发错误?如果是这样,这就是它现在的行为。


回复你的评论:

首先,INT(11)INT(2)INT(327) 没有任何不同。 number 参数只是显示宽度的提示,它与 INT 将存储的位数无关。请参阅我对 Types in MySQL: BigInt(20) vs Int(20) 的回答

您说在将列类型更改为 INT 后您仍然遇到相同的错误。 @i 的值是多少?收到错误后运行此查询:

SELECT @i;

关于mysql - #1265 - 列 MYSQL 5.7 的数据被截断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39351616/

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