use strict; use warnings; use 5.010; use DBI; use Config::JSON; use Text::Diff; use Switch::Right; my $config = Config::JSON->new('/home/lacuna/server/etc/lacuna.conf'); my $dev = DBI->connect($config->get('db/dsn'), $config->get('db/username'), $config->get('db/password')); my $prod = DBI->connect('DBI:mysql:prod', $config->get('db/username'), $config->get('db/password')); my @dev_tables = @{$dev->selectcol_arrayref("show tables")}; my @prod_tables = @{$prod->selectcol_arrayref("show tables")}; foreach my $table_name (@dev_tables) { say "TABLE: ".$table_name; my $dev_table = get_table_definition($dev, $table_name); my $prod_table = ''; if (smartmatch($table_name, any => \@prod_tables)) { $prod_table = get_table_definition($prod, $table_name); } say diff \$prod_table, \$dev_table; } $dev->disconnect; $prod->disconnect; sub get_table_definition { my ($db, $name) = @_; return $db->selectrow_arrayref("show create table $name")->[1]; }