Любой способ просмотреть ALTER TABLE после его выполнения? -MySQL - PullRequest
7 голосов
/ 24 февраля 2010

Точно так же ПОКАЗАТЬ CREATE TABLE tblname; возвращает то, что было выполнено ранее, есть ли способ просмотреть SQL-запрос ALTER TABLE? Пожалуйста, помогите?

Ответы [ 3 ]

5 голосов
/ 24 февраля 2010

Одно небольшое уточнение: show create table на самом деле не «возвращает то, что было ранее выполнено». Он просто показывает вам DDL, который будет создавать таблицу с нуля. Таблица, возможно, создавалась и затем изменялась много раз, но show create table отражает текущее состояние таблицы.

Что касается нахождения любых alter table операторов, которые недавно запускались на столе, то лучше всего ставить двоичный журнал.

Сначала проверьте, включено ли двоичное ведение журнала:

show variable like 'log_bin';

Если это так, найдите двоичный журнал за соответствующий период времени, используйте mysqlbinlog для преобразования его в SQL, затем grep для соответствующего имени таблицы, чтобы найти искомый оператор alter table.

2 голосов
/ 14 января 2013

Инструменты:

  • Maatkit.
  • Сравнение схемы и данных MySQL от Red-Gate
  • жаба
  • SQLyog
  • MySQL Diff

Руководство:

Сначала проверьте, включено ли двоичное ведение журнала:

show variable like 'log_bin';

Тогда

mysqlbinlog /var/log/mysql/mysql-bin.000001 | grep 'alter table *tablename*' > test.file

Перейдите на test.file, чтобы увидеть операторы alter.

1 голос
/ 24 февраля 2010

Если в вашем экземпляре MySQL включено ведение журналов, вы можете просматривать журналы. Это был бы лучший вариант.

Если в вашей системе включена история, вы можете запустить клиент обратно из той же системы и попробовать стрелку вверх. Возможно, вы сможете увидеть команду там.

Если вы знаете пользователя, который выполнил команду, и он случайно запустил ее непосредственно из командной строки, может сработать тот же трюк истории.

...