我試圖挽救已經變質的Gitorious安裝。我已經使用mysqldump
轉儲SQL表,但現在我遇到了Gitorious的新版本在幾個地方更改其SQL模式的問題。將SQL表複製到具有更多列的新表中
尤其是舊版本有一個表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
?
(新Gitorious' taggings
表開始是空的。)
工程就像一個魅力!將在10分鐘內接受答案。 – 2013-05-03 13:56:43