ChatGPT 回答: TEXT 字段不能有默认值,因为 TEXT 字段是一种多行文本数据类型,其包含的内容可以是任意长度的文本。由于这种原因,MySQL 在创建时无法为 TEXT 字段正确识别出适当的“默认”值来使用。
但是不能让我信服。
相关问题:
https://stackoverflow.com/questions/3466872/why-cant-a-text-column-have-a-default-value-in-mysql
回答似乎也没到点子上。不知道 V 友有没有相关了解的
1
seashell2000 2023-02-24 11:24:48 +08:00 1
缺省的 sql-mode 不允许
|
2
5200721 2023-02-24 12:12:25 +08:00 via Android
前两天也好遇到这个问题,于是把 not null 改成 null ,default 值去掉了。
|
3
qile1 2023-02-24 12:35:11 +08:00 via Android
借楼主帖子问下 mysql 里面列名称存在换行如何修改或者去掉。
新建列名称时候不小心粘贴了换行 把 names 粘贴成'name names'啦,我尝试删除列名,去掉这列进行备份,数据库管理程序直接卡死,在控制台运行也报错,有没有办法?谢谢 |
4
codehz 2023-02-24 12:50:56 +08:00 via iPhone 4
说白了就是 mysql 的实现限制问题,text 存放有额外空间需求,隔壁 postgresql 都没有这种破事
|
5
jaggle OP @qile1 ALTER TABLE table_name RENAME `old_field` TO `new_field`; 试试改一下列名
|
6
realpg 2023-02-24 14:20:35 +08:00
加个 trigger 就完事
|
7
Goat121 2023-02-24 14:44:00 +08:00
@realpg 你是没经历过 trigger 盛行的年代吧,多了维护得你想死。互联网公司代码规范禁 trigger 都好多年了吧
|
8
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')); |