我已阅读有关MySQL ALTER TABLE的大部分帖子,但无法找到我的问题的答案。
我有一个脚本可以向表中添加一个新列,这样可以正常工作,但我遇到的问题是它没有为新列设置默认值。我错过了什么:
ALTER TABLE Hist ADD S1 VARCHAR( 5 ) DEFAULT '1', ADD comments_S1 TEXT
以上是我正在使用的代码。
任何想法
非常感谢你的时间。
答案 0 :(得分:1)
唉,default
值仅用于新行。旧行获得NULL
。因此,只需在alter table之后更新它们:
update hist
set s1 = '1';
这在MySQL中并不是很好documented,但它有点建议。 。
仅修改表元数据而非表数据的更改 立即因为服务器只需要改变表.frm文件, 不要触摸桌面内容。以下更改是快速更改 可以这样做:
。 。 。 - 更改列的默认值(NDB表除外)。
添加列 需要表副本。但旧的价值观并未受到影响。
答案 1 :(得分:0)
我相信将列添加到MySQL表的语法是:
ALTER TABLE table_name ADD COLUMN col type DEFAULT 'default';
您的语法中缺少关键字COLUMN
。请尝试以下方法:
ALTER TABLE Hist
ADD S1 VARCHAR(5) DEFAULT '1',
ADD comments_S1 TEXT;
答案 2 :(得分:0)
看起来像你的应用程序代码中的东西将S1字段设置为空字符串。
ALTER TABLE Hist
ADD S1 VARCHAR(5) DEFAULT '1' NOT NULL,
ADD comments_S1 TEXT;
它会阻止S1为空并自动将NULL
字段更改为'1'