show create table 命令显示以下内容:
'columnA' varchar(6) NOT NULL DEFAULT '';
如何修改该列以删除非空值?我需要它是:
'columnA' varchar(6) DEFAULT NULL;
我认为以下方法会起作用,但它没有效果:
ALTER TABLE tbl_name MODIFY columnA varchar(6) DEFAULT NULL;
show create table 命令显示以下内容:
'columnA' varchar(6) NOT NULL DEFAULT '';
如何修改该列以删除非空值?我需要它是:
'columnA' varchar(6) DEFAULT NULL;
我认为以下方法会起作用,但它没有效果:
ALTER TABLE tbl_name MODIFY columnA varchar(6) DEFAULT NULL;
试试这个:
ALTER TABLE tbl_name MODIFY columnA varchar(6) NULL DEFAULT NULL;
通常,埃里克的回答应该有效:
ALTER TABLE tbl_name MODIFY columnA varchar(6) NULL DEFAULT NULL;
(尽管“NULL DEFAULT NULL”部分是可选的)。
但是像你一样,我有一个案例没有做任何事情就返回了。就我而言,这似乎是因为我的密钥是主键的一部分。所以我不得不做以下事情:
ALTER TABLE tbl_name DROP PRIMARY KEY;
ALTER TABLE tbl_name MODIFY columnA varchar(6);
ALTER TABLE tbl_name ADD PRIMARY KEY (columnA);
最后一个查询指定您的主键实际上是什么。
此外,如果有人认为这太冗长,以下组合查询不起作用,即使它应该是相同的:
ALTER TABLE tbl_name DROP PRIMARY KEY, MODIFY columnA varchar(6), ADD PRIMARY KEY (columnA);
我假设 mysql 将最后一个查询重写为不同的顺序,以便在执行修改时主键仍然存在,因此需要将其分成三个语句。
仅供参考,这是在 mysql 5.1.47 上,但我还没有找到任何说明为什么会发生这种情况的文档,所以我不知道哪些版本受到影响。
在 phpMyAdmin 中进行更改(本地)。它将显示用于更改的查询。在生产环境中执行这个查询,你就完成了。
您可以在任何 GUI 工具中使用此策略来查看它执行的查询。我个人使用Sequel Pro(适用于 Mac OS X)而不是 phpMyAdmin。