我正在尝试向表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'
答案 0 :(得分:1)
将data_available
列的默认值从0000-00-00
更改为1000-01-01
解决了问题。