Mysql:如何制作表格的精确工作副本?

时间:2010-05-20 19:34:14

标签: mysql sql triggers

我正致力于重建遗留数据库及其相关应用程序。为了保持旧的和新的并行工作,我创建了一个开发数据库并将感兴趣的表复制到它,例如

create database devdb;

drop table if exists devdb.tab1;
CREATE TABLE devdb.tab1 like working.tab1;
insert into devdb.tab1 select * from working.tab1;

完成此操作后,我注意到影响tab1的触发器尚未被复制。有没有什么方法可以生成tab1的工作副本,即数据,权限,触发器,一切?

3 个答案:

答案 0 :(得分:0)

有一种更快的方法来重新创建结构和导入数据(尽管你丢失了索引;)):

 create table devdb.tab1 select * from working.tab1;

对于触发器和朋友,您必须在information_schemas中查询

答案 1 :(得分:0)

嗯,事后看来有点明显,但似乎通过mysqldump转储表并在新数据库中加载这些转储会恢复触发器(我希望其他任何相关信息)。

我很想通过DbVisualizer数据库管理器完成整个过程。你整天都在学习......

答案 2 :(得分:0)

请注意,“create table x select * from y”语法将创建表的精确工作副本,即使您不关心触发器是什么。新表将:

  • 使用默认的MyISAM表类型(即使父表是InnoDB)
  • 默认为Latin1字符集(即使父表是UTF-8)
  • 可以清除auto_incremented字段的值并将其替换为0(取决于表结构,但如果它发生在您身上则非常讨厌)