V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MySQL 5.5 Community Server
MySQL 5.6 Community Server
Percona Configuration Wizard
XtraBackup 搭建主从复制
Great Sites on MySQL
Percona
MySQL Performance Blog
Severalnines
推荐管理工具
Sequel Pro
phpMyAdmin
推荐书目
MySQL Cookbook
MySQL 相关项目
MariaDB
Drizzle
参考文档
http://mysql-python.sourceforge.net/MySQLdb.html
jaggle
V2EX  ›  MySQL

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

  •  1
     
  •   jaggle · 2023-02-24 11:02:53 +08:00 · 2838 次点击
    这是一个创建于 648 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    但是不能让我信服。

    相关问题:

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

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

    8 条回复    2023-03-01 10:07:25 +08:00
    seashell2000
        1
    seashell2000  
       2023-02-24 11:24:48 +08:00   ❤️ 1
    缺省的 sql-mode 不允许
    5200721
        2
    5200721  
       2023-02-24 12:12:25 +08:00 via Android
    前两天也好遇到这个问题,于是把 not null 改成 null ,default 值去掉了。
    qile1
        3
    qile1  
       2023-02-24 12:35:11 +08:00 via Android
    借楼主帖子问下 mysql 里面列名称存在换行如何修改或者去掉。
    新建列名称时候不小心粘贴了换行 把 names 粘贴成'name
    names'啦,我尝试删除列名,去掉这列进行备份,数据库管理程序直接卡死,在控制台运行也报错,有没有办法?谢谢
    codehz
        4
    codehz  
       2023-02-24 12:50:56 +08:00 via iPhone   ❤️ 4
    说白了就是 mysql 的实现限制问题,text 存放有额外空间需求,隔壁 postgresql 都没有这种破事
    jaggle
        5
    jaggle  
    OP
       2023-02-24 13:07:27 +08:00
    @qile1 ALTER TABLE table_name RENAME `old_field` TO `new_field`; 试试改一下列名
    realpg
        6
    realpg  
       2023-02-24 14:20:35 +08:00
    加个 trigger 就完事
    Goat121
        7
    Goat121  
       2023-02-24 14:44:00 +08:00
    @realpg 你是没经历过 trigger 盛行的年代吧,多了维护得你想死。互联网公司代码规范禁 trigger 都好多年了吧
    Rache1
        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'));
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1396 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 17:40 · PVG 01:40 · LAX 09:40 · JFK 12:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.