不懂就问:为什么 Text 字段不能有默认值?

2023-02-24 11:02:53 +08:00
 jaggle

ChatGPT 回答: TEXT 字段不能有默认值,因为 TEXT 字段是一种多行文本数据类型,其包含的内容可以是任意长度的文本。由于这种原因,MySQL 在创建时无法为 TEXT 字段正确识别出适当的“默认”值来使用。

但是不能让我信服。

相关问题:

https://stackoverflow.com/questions/3466872/why-cant-a-text-column-have-a-default-value-in-mysql

回答似乎也没到点子上。不知道 V 友有没有相关了解的

2475 次点击
所在节点    MySQL
8 条回复
seashell2000
2023-02-24 11:24:48 +08:00
缺省的 sql-mode 不允许
5200721
2023-02-24 12:12:25 +08:00
前两天也好遇到这个问题,于是把 not null 改成 null ,default 值去掉了。
qile1
2023-02-24 12:35:11 +08:00
借楼主帖子问下 mysql 里面列名称存在换行如何修改或者去掉。
新建列名称时候不小心粘贴了换行 把 names 粘贴成'name
names'啦,我尝试删除列名,去掉这列进行备份,数据库管理程序直接卡死,在控制台运行也报错,有没有办法?谢谢
codehz
2023-02-24 12:50:56 +08:00
说白了就是 mysql 的实现限制问题,text 存放有额外空间需求,隔壁 postgresql 都没有这种破事
jaggle
2023-02-24 13:07:27 +08:00
@qile1 ALTER TABLE table_name RENAME `old_field` TO `new_field`; 试试改一下列名
realpg
2023-02-24 14:20:35 +08:00
加个 trigger 就完事
Goat121
2023-02-24 14:44:00 +08:00
@realpg 你是没经历过 trigger 盛行的年代吧,多了维护得你想死。互联网公司代码规范禁 trigger 都好多年了吧
Rache1
2023-03-01 10:07:25 +08:00
刚刚看文档的时候发现,8.0.13 以后,可以给默认值了。

https://dev.mysql.com/doc/refman/8.0/en/data-type-defaults.html#data-type-defaults-explicit-old

需要你用括号括起来,就像这样。

create table text_default(t1 text default ('haha'));

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/918789

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX