對於我的MySQL數據庫中的每個表,我有一個mytablename.sql
文件,其中包含該表的CREATE TABLE
語句。如何測試SQL「CREATE TABLE」語句是否與現有表相同?
我想添加一個測試,以檢查沒有人在活動數據庫中添加/更改列而不更新此文件 - 即,我想檢查是否可以使用這些腳本重新創建空數據庫。
我該如何可靠地做到這一點?
一個選項將使用SHOW COLUMNS FROM mytable
(或DESCRIBE mytable
),其在命令行上會以表格形式像這樣輸出:
+---------+------------------+------+-----+---------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+------------------+------+-----+---------------------+----------------+
| pk_guid | int(10) unsigned | NO | PRI | NULL | auto_increment |
| d_start | datetime | NO | MUL | 0000-00-00 00:00:00 | |
| d_end | datetime | NO | MUL | 0000-00-00 00:00:00 | |
+---------+------------------+------+-----+---------------------+----------------+
然後創建一個臨時表,並比較結果。
這樣可以,但是如果任何列已被添加到實時數據庫中,那麼結果可能不是相同的行順序。
不幸的是,似乎無法使用ORDER BY
和SHOW COLUMNS
。
另一種選擇是使用SHOW CREATE TABLE
,但包括信息,如AUTO_INCREMENT
計數器值,我不關心。
有沒有更好的方法來做到這一點?
我認爲SHOW CREATE TABLE是最好的你可以得到。誰在乎是否有其他信息,您可以輕鬆地將其關閉。 – 2010-01-26 17:02:30