After inspecting the code (sub swap_tables) I see that the title is wrong, since there is a length check in the table name: if ( length($table_name) > 64 ) { my $truncated_table_name = substr($table_name, 0, 64); PTDEBUG && _d($table_name, 'is > 64 chars, truncating to', $truncated_table_name); $table_name = $truncated_table_name; } I'm not sure I understand the underlying problem yet, but we hardcode the number of tries to 10: my $name_tries = 10; # don't try forever ... while ( $name_tries-- ) { ... } # This shouldn't happen. # Here and in the attempt to find a new table name we probably ought to # use --tries (and maybe a Retry object?) die ts("Failed to find a unique old table name after " . "serveral attempts.\n"); } And then, for some reason, the "Try X of 10" instead of showing 1, 2, 3, etc, is always showing 1. # cat /tmp/pt-osc_t1.out.err | grep "Try code did not succeed" | wc -l 10 # cat /tmp/pt-osc_t1_2.out.err | grep "Try" # Retry:3745 24763 Try 1 of 10 # Retry:3762 24763 Try code succeeded # Retry:3745 24763 Try 1 of 10 # Retry:3762 24763 Try code succeeded # Retry:3745 24763 Try 1 of 10 # Retry:3762 24763 Try code succeeded # Retry:3745 24763 Try 1 of 10 # Retry:3762 24763 Try code succeeded # Retry:3745 24763 Try 1 of 10 # Retry:3762 24763 Try code succeeded # Retry:3745 24763 Try 1 of 10 # Retry:3751 24763 Try code failed: DBD::mysql::db do failed: Table '_t1_old' already exists [for Statement "RENAME TABLE `test`.`t1` TO `test`.`_t1_old`, `test`.`__t1_new` TO `test`.`t1`"] at /usr/bin/pt-online-schema-change line 10134. # Retry:3767 24763 Try code did not succeed # Retry:3745 24763 Try 1 of 10 # Retry:3751 24763 Try code failed: DBD::mysql::db do failed: Table '__t1_old' already exists [for Statement "RENAME TABLE `test`.`t1` TO `test`.`__t1_old`, `test`.`__t1_new` TO `test`.`t1`"] at /usr/bin/pt-online-schema-change line 10134. # Retry:3767 24763 Try code did not succeed # Retry:3745 24763 Try 1 of 10 # Retry:3751 24763 Try code failed: DBD::mysql::db do failed: Table '___t1_old' already exists [for Statement "RENAME TABLE `test`.`t1` TO `test`.`___t1_old`, `test`.`__t1_new` TO `test`.`t1`"] at /usr/bin/pt-online-schema-change line 10134. # Retry:3767 24763 Try code did not succeed # Retry:3745 24763 Try 1 of 10 # Retry:3751 24763 Try code failed: DBD::mysql::db do failed: Table '____t1_old' already exists [for Statement "RENAME TABLE `test`.`t1` TO `test`.`____t1_old`, `test`.`__t1_new` TO `test`.`t1`"] at /usr/bin/pt-online-schema-change line 10134. # Retry:3767 24763 Try code did not succeed # Retry:3745 24763 Try 1 of 10 # Retry:3751 24763 Try code failed: DBD::mysql::db do failed: Table '_____t1_old' already exists [for Statement "RENAME TABLE `test`.`t1` TO `test`.`_____t1_old`, `test`.`__t1_new` TO `test`.`t1`"] at /usr/bin/pt-online-schema-change line 10134. # Retry:3767 24763 Try code did not succeed # Retry:3745 24763 Try 1 of 10 # Retry:3751 24763 Try code failed: DBD::mysql::db do failed: Table '______t1_old' already exists [for Statement "RENAME TABLE `test`.`t1` TO `test`.`______t1_old`, `test`.`__t1_new` TO `test`.`t1`"] at /usr/bin/pt-online-schema-change line 10134. # Retry:3767 24763 Try code did not succeed # Retry:3745 24763 Try 1 of 10 # Retry:3751 24763 Try code failed: DBD::mysql::db do failed: Table '_______t1_old' already exists [for Statement "RENAME TABLE `test`.`t1` TO `test`.`_______t1_old`, `test`.`__t1_new` TO `test`.`t1`"] at /usr/bin/pt-online-schema-change line 10134. # Retry:3767 24763 Try code did not succeed # Retry:3745 24763 Try 1 of 10 # Retry:3751 24763 Try code failed: DBD::mysql::db do failed: Table '________t1_old' already exists [for Statement "RENAME TABLE `test`.`t1` TO `test`.`________t1_old`, `test`.`__t1_new` TO `test`.`t1`"] at /usr/bin/pt-online-schema-change line 10134. # Retry:3767 24763 Try code did not succeed # Retry:3745 24763 Try 1 of 10 # Retry:3751 24763 Try code failed: DBD::mysql::db do failed: Table '_________t1_old' already exists [for Statement "RENAME TABLE `test`.`t1` TO `test`.`_________t1_old`, `test`.`__t1_new` TO `test`.`t1`"] at /usr/bin/pt-online-schema-change line 10134. # Retry:3767 24763 Try code did not succeed # Retry:3745 24763 Try 1 of 10 # Retry:3751 24763 Try code failed: DBD::mysql::db do failed: Table '__________t1_old' already exists [for Statement "RENAME TABLE `test`.`t1` TO `test`.`__________t1_old`, `test`.`__t1_new` TO `test`.`t1`"] at /usr/bin/pt-online-schema-change line 10134. # Retry:3767 24763 Try code did not succeed # Retry:3745 24763 Try 1 of 10 # Retry:3762 24763 Try code succeeded # Retry:3745 24763 Try 1 of 10 # Retry:3762 24763 Try code succeeded # Retry:3745 24763 Try 1 of 10 # Retry:3762 24763 Try code succeeded