Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL更新bigint字段_Mysql_Sql_Database_Bigint - Fatal编程技术网

MySQL更新bigint字段

MySQL更新bigint字段,mysql,sql,database,bigint,Mysql,Sql,Database,Bigint,如何更新MySql数据库bigint字段 目前,我们的数据库有一个bigint(196605)字段,该字段正在生成错误。我很确定字段限制是250,即bigint(250),这解释了产生的错误 字段本身只存储3位整数值,例如100,所以我不知道为什么它甚至是bigint。在任何情况下,我都需要在不丢失任何数据的情况下修复字段 任何帮助都将不胜感激 这是一个常见的困惑BIGINT类型具有固定大小存储在8B上,因此BIGINT(1)和BIGINT(20)之间的唯一区别是将显示的位数分别为1位和20位

如何更新MySql数据库bigint字段

目前,我们的数据库有一个bigint(196605)字段,该字段正在生成错误。我很确定字段限制是250,即bigint(250),这解释了产生的错误

字段本身只存储3位整数值,例如100,所以我不知道为什么它甚至是bigint。在任何情况下,我都需要在不丢失任何数据的情况下修复字段


任何帮助都将不胜感激

这是一个常见的困惑
BIGINT
类型具有固定大小存储在8B上,因此
BIGINT(1)
BIGINT(20
)之间的唯一区别是将显示的位数分别为1位和20位

如果您只存储3位数字,并且您认为不需要更多,则可以使用
SMALLINT UNSIGNED
类型,该类型只需要2B而不是8B,这样可以节省大量空间并提高性能


我建议您先阅读。

可能是在创建数据库字段时,您设置了它的长度,如果我们没有设置任何长度,那么我认为默认值为11。但是如果我们通过,那么它将以指定的值作为长度。

在您执行某项操作之前,请将数据导出(备份)到SQL文件(自动生成的数据插入)以保存数据,然后再更改表,您知道如果数据丢失,您可以导入数据

如果要更改列,必须按如下方式更新表:

ALTER TABLE tableName CHANGE columnName newColumnName BIGINT(250)

我认为这应该行得通


没有测试(我使用MS SQL Server 2008,无法检查它是否有效)

感谢您澄清,bigint(196605)确实太大,我很确定它无效,即最大大小为bigint(250),但我不确定如何更新字段以减少值。
ALTER TABLE MODIFY SMALLINT UNSIGNED由于您正在存储3位数字谢谢,这正是我需要的。如果字段类型从BIGINT更改为SMALLINT,列数据会丢失吗?如果该列中的值没有超过
SMALLINT
的限制,即65535(无符号),则不会丢失。我得到错误“1347-”。不是基表