MySQL 报错 1170:BLOB、TEXT 字段不能拥有默认值(mysql 1170)

许多MySQL用户在查表过程中会遇到Error 1170,这种错误是告诉用户BLOB类型和TEXT类型字段不能有默认值,也就是说在创建表的时候,BLOB或者TEXT类型的字段不能设置默认值。

为什么MySQL 不允许为BLOB或TEXT类型的字段设置默认值? BLOB类型是可二进增长类型,所以它可以存储大数据,而TEXT字段是用来存储文本信息,这种字段存储的内容是没有规律可言的,每个人可以定义自己的文本内容,没有可预知的范围和大小,所以BLOB、TEXT类型的数据和普通的其他类型的字段不太一样,MySQL为了防止查询时发生错误,不能为这些类型的字段设置默认值。

另一方面,MySQL使用了行锁机制,每次执行增、删、改的过程,也都需要进行行锁,如果MySQL允许 BLOB、TEXT 类型的字段设置默认值,那么在处理大数据时,行锁非常耗费资源,会降低MySQL系统的效率和性能,所以MySQL禁止为BLOB、TEXT类型的字段设置默认值。

可以通过以下SQL语句为BLOB、TEXT类型的字段设置默认值:

“`sql

ALTER TABLE table_name

MODIFY column_name TEXT DEFAULT ‘default_text’;


以上SQL会修改table_name表中的column_name字段的类型为TEXT类型,并且设置默认值为default_text。

有时候开发人员需要给BLOB或TEXT类型设置默认值,但是 MySql 并不允许,如果设置了默认值,就会报错哦,1170 Error,错误信息为: BLOB、TEXT 字段不能拥有默认值,所以在处理MySQL数据库时,一定要注意,BLOB和TEXT类型的字段千万不能设置默认值。

数据运维技术 » MySQL 报错 1170:BLOB、TEXT 字段不能拥有默认值(mysql 1170)