13

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

表架构::

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 查询::

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

7 回答 7

21

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

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

于 2013-04-22T08:09:14.050 回答
2

利用modify

ALTER TABLE `table1` MODIFY column `col2` text default '';
于 2013-04-22T07:37:41.597 回答
2

首先,表模式不正确。它会抛出错误:表中不存在键列“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值。参考

好读:为什么文本列在 MySQL 中不能有默认值?

于 2017-01-25T13:21:10.743 回答
0

尝试这个

ALTER TABLE yourtable_name ALTER COLUMN columnname SET DEFAULT ' ' ;

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

于 2013-04-22T08:16:38.253 回答
0
ALTER TABLE `table1` change `col2` `col2` text  NOT NULL default '';
于 2013-04-22T07:37:03.133 回答
0

在 phpmyadmin 中,转到特定字段的“更改”选项并选择 Default2 as defined: 并将下面的文本框留空

例如:

字段频率
类型 VARCHAR
长度/值 1 20

默认 2 定义:并且文本框为空

最后点击保存按钮

于 2015-09-02T05:46:01.150 回答
-1

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

于 2017-11-08T00:35:08.043 回答