我正在尝试挽救一个坏掉的Gitorious安装。我已经使用 转储了 SQL 表mysqldump
,但现在我遇到了新版本的 Gitorious 在几个地方更改了其 SQL 架构的问题。
特别是,旧版本有一个 table taggings
,看起来像
mysql> describe taggings;
+---------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| tag_id | int(11) | YES | MUL | NULL | |
| taggable_id | int(11) | YES | MUL | NULL | |
| taggable_type | varchar(255) | YES | | NULL | |
| created_at | datetime | YES | | NULL | |
+---------------+--------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)
在新版本中,该表增加了三列:
mysql> describe taggings;
+---------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| tag_id | int(11) | YES | MUL | NULL | |
| taggable_id | int(11) | YES | MUL | NULL | |
| taggable_type | varchar(255) | YES | | NULL | |
| created_at | datetime | YES | | NULL | |
| tagger_id | int(11) | YES | | NULL | |
| tagger_type | varchar(255) | YES | | NULL | |
| context | varchar(255) | YES | | NULL | |
+---------------+--------------+------+-----+---------+----------------+
8 rows in set (0.00 sec)
以便
grep 'INSERT INTO `taggings`' inuse.sql | mysql -uroot gitorious_production
失败了
ERROR 1136 (21S01) at line 1: Column count doesn't match value count at row 1
有没有一种简单的方法来告诉 MySQL 最后两个字段应该保留它们的默认值NULL
?
(新的 Gitorioustaggings
桌子一开始是空的。)