Для каждой таблицы в моей базе данных MySQL у меня есть файл mytablename.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
, которая меня не волнует.
Есть ли лучший способ сделать это?