添加MySQL列时无效的日期错误

时间:2016-08-30 07:48:24

标签: mysql

我正在尝试向表color添加新列product,但出于某种原因,它会抱怨:

An error occurred when trying to add the field 'color' via

ALTER TABLE `product` ADD `color` VARCHAR(64)
 CHARACTER SET utf8
 COLLATE utf8_general_ci
 NOT NULL
 DEFAULT ''
 AFTER `date_modified`

MySQL said: Invalid default value for 'date_available'

表格结构:

mysql> describe product;
+-----------------+---------------+------+-----+------------+----------------+
| Field           | Type          | Null | Key | Default    | Extra          |
+-----------------+---------------+------+-----+------------+----------------+
| product_id      | int(11)       | NO   | PRI | NULL       | auto_increment |
| model           | varchar(64)   | NO   |     | NULL       |                |
| sku             | varchar(64)   | NO   |     | NULL       |                |
| upc             | varchar(12)   | NO   |     | NULL       |                |
| ean             | varchar(14)   | NO   |     | NULL       |                |
| jan             | varchar(13)   | NO   |     | NULL       |                |
| isbn            | varchar(17)   | NO   |     | NULL       |                |
| mpn             | varchar(64)   | NO   |     | NULL       |                |
| location        | varchar(128)  | NO   |     | NULL       |                |
| quantity        | int(4)        | NO   |     | 0          |                |
| stock_status_id | int(11)       | NO   |     | NULL       |                |
| image           | varchar(255)  | YES  |     | NULL       |                |
| manufacturer_id | int(11)       | NO   |     | NULL       |                |
| shipping        | tinyint(1)    | NO   |     | 1          |                |
| price           | decimal(15,4) | NO   |     | 0.0000     |                |
| points          | int(8)        | NO   |     | 0          |                |
| tax_class_id    | int(11)       | NO   |     | NULL       |                |
| date_available  | date          | NO   |     | 0000-00-00 |                |
| weight          | decimal(15,8) | NO   |     | 0.00000000 |                |
| weight_class_id | int(11)       | NO   |     | 0          |                |
| length          | decimal(15,8) | NO   |     | 0.00000000 |                |
| width           | decimal(15,8) | NO   |     | 0.00000000 |                |
| height          | decimal(15,8) | NO   |     | 0.00000000 |                |
| length_class_id | int(11)       | NO   |     | 0          |                |
| subtract        | tinyint(1)    | NO   |     | 1          |                |
| minimum         | int(11)       | NO   |     | 1          |                |
| sort_order      | int(11)       | NO   |     | 0          |                |
| status          | tinyint(1)    | NO   |     | 0          |                |
| viewed          | int(5)        | NO   |     | 0          |                |
| date_added      | datetime      | NO   |     | NULL       |                |
| date_modified   | datetime      | NO   |     | NULL       |                |
+-----------------+---------------+------+-----+------------+----------------+
31 rows in set (0.00 sec)

因此,如果我添加一行并遗漏date_available那可能是正确的,但由于它是一个与现有列无关的新列,我不确定我在这里做错了什么?

修改:尝试暂时将日期字段更改为NULL,但是:

ALTER TABLE `product` CHANGE `date_available` `date_available` DATE
 NULL
 DEFAULT '0000-00-00'

MySQL said: Invalid default value for 'date_available'

1 个答案:

答案 0 :(得分:1)

data_available列的默认值从0000-00-00更改为1000-01-01解决了问题。