将TEXT列默认值从null更改为''(空字符串)

时间:2013-04-22 07:35:18

标签: mysql sql

我有一个表,在创建表时没有指定默认值。 现在我想将默认值更改为''(空字符串)。 当我运行alter table query时它会成功,但是如果没有指定列值,仍然会在新行插入表中将NULL视为默认值。

TABLE Schema ::

CREATE TABLE `table1` (
  `col1` INT(11) NOT NULL AUTO_INCREMENT,
  `col2` TEXT,
  `col3` INT(11) DEFAULT NULL,
  `col4` TINYINT(1) DEFAULT '0',
  PRIMARY KEY (`id`)
);

ALTER Query ::

ALTER TABLE `table1` change `col2` `col2` text  default '';

7 个答案:

答案 0 :(得分:17)

Blob和文本列的值不能为DEFAULTRef)。根据平台的不同,当您尝试执行此操作时,MySQL可能会生成警告或错误。

将数据类型更改为更合适的类型(例如VARCHAR)。

答案 1 :(得分:2)

试试这个

ALTER TABLE yourtable_name ALTER COLUMN columnname SET DEFAULT ' ' ;

它为我工作。希望它会帮助你。

答案 2 :(得分:1)

使用modify

ALTER TABLE `table1` MODIFY column `col2` text default '';

答案 3 :(得分:1)

首先,表模式不正确。它会抛出错误: 关键栏' id'表

中不存在
CREATE TABLE `test_table1` (
  `col1` INT(11) NOT NULL AUTO_INCREMENT,
  `col2` TEXT,
  `col3` INT(11) DEFAULT NULL,
  `col4` TINYINT(1) DEFAULT '0',
  PRIMARY KEY (`id`)
);

纠正问题本身

CREATE TABLE `test_table1` (
  `col1` INT(11) NOT NULL AUTO_INCREMENT,
  `col2` TEXT,
  `col3` INT(11) DEFAULT NULL,
  `col4` TINYINT(1) DEFAULT '0',
  PRIMARY KEY (`col1`)
);

现在,如果您要运行Alter法规

ALTER TABLE `table1` change `col2` `col2` text  default '';

错误信息是:BLOB,TEXT,GEOMETRY或JSON列' col2'无法获得default值。 Reference

好读:Why can't a text column have a default value in MySQL?

答案 4 :(得分:0)

ALTER TABLE `table1` change `col2` `col2` text  NOT NULL default '';

答案 5 :(得分:0)

在phpmyadmin中,转到"更改"特定字段的选项,并选择Default2作为As定义:并将下面的文本框留空

例如:

场频
键入VARCHAR
长度/值1 20

默认值2已定义:和文本框为空白

最后点击“保存”按钮

答案 6 :(得分:-1)

使用以下查询更改表结构 USE MODIFY ALTER TABLE <table> MODIFY <column> VARCHAR(<XX>) DEFAULT '';