�&ǐk�@'bJ�h�ۊL'}T� :��'2�Z#$��n�a��� �>a��`��_3d�Qpt�/�P -��#5�,�M��� �pA:©�q�����NW��ډ�A���� �9nʺج���� �TSM��{J6?7��r�@�\����D��� �׶���s�f�TJj?"��D��`?��̒� b�#�%�C*v�$�{�$����5Ծ�F�s��y�e/8��h-�f�̰&(����Gj�L:U� 2�� ����v�_k����Y��gp,�k�WF�R������_C�R��N@���R�@�ߔ?A�w9���F("iNa-S���Q�o�3tDMLh*�#4k�T/iQ��Y*�G��m����)��8�hBm/�I�,g�ﯖ���Z��}�Cz�q@´��d.����L�ŕ�,��1�Z�܌�: ̪���F+J-'��c�tvJ8��]Q-��b��y �6;*J`r_�d ��'�G ~p��)'�C,�%F��E(��2�k�����lР�z�!�=t ��_�0��f7��� ;�p�|�U �%{'mysql-version'}; our $logger = Cpanel::Logger->new(); exit( run() ) unless caller(); sub usage { print < \$anyversion, }; Cpanel::Usage::wrap_options( \@ARGV, \&usage, $opts ); # we only need to perform this task when upgrading to 5.0 or 5.1 # in that version the InnoDB tables are left in a repair mode # after the upgrade. MySQL 4.1 does not have the information schema # table for us to operate on so do not run on MySQL 4.1. if ( $anyversion == 0 && ( $configured_version gt "5.1" || $configured_version lt "5.0" ) ) { print "Designed to run on MySQL 5.0 or 5.1 during an upgrade\n"; return 1; } $logger->info("fix_innodb_tables called :$configured_version:"); print "Repairing InnoDB tables after upgrade\n"; # I am forcing this to localhost, as this should only be called during # a cpanel rpm install my $database = "information_schema"; my $mysqlhost = 'localhost'; my $dbh; eval { $dbh = Cpanel::MysqlUtils::Connect::get_dbi_handle( 'database' => $database, 'dbserver' => $mysqlhost, ); }; if ( $@ || !$dbh ) { warn "fix_innodb_tables: Failed to connect to db: $database: $@"; print "Failed to connect to db: $database: $@"; return 1; } # #NOTES: # #http://bugs.mysql.com/bug.php?id=44640 #http://www.mysqlperformanceblog.com/2010/05/14/mysql_upgrade-and-innodb-tables/ # my $sql = qq~SELECT table_schema, table_name, engine FROM tables;~; my $sth = $dbh->prepare($sql); my $results = $sth->execute(); if ( $sth->rows ) { print "\nChecking " . $sth->rows . " tables. This may take some time.\n\n"; while ( my $ref = $sth->fetchrow_hashref ) { if ( uc( $ref->{'engine'} ) eq "INNODB" ) { my $schema = Cpanel::MysqlUtils::Quote::quote_identifier( $ref->{'table_schema'} ); my $name = Cpanel::MysqlUtils::Quote::quote_identifier( $ref->{'table_name'} ); print qq~Checking $schema.$name~; my $sql2 = qq~CHECK TABLE $schema.$name;~; my $sth2 = $dbh->prepare($sql2); my $results = $sth2->execute(); if ( $sth2->rows ) { my $array_ref = $sth2->fetchrow_arrayref; if ( $array_ref->[2] eq "error" ) { print "-- Repairing Table\n"; my $sql3 = qq~ALTER TABLE $schema.$name ENGINE=INNODB;~; my $sth3 = $dbh->prepare($sql3); $sth3->execute(); $sth3->finish(); } else { print "-- Table Clean\n"; } } $sth2->finish(); } } } $sth->finish(); return 0; } 1; __END__