The bulk `mysql < file.sql` run aborted on the first "duplicate column" error because some columns from an earlier partial run already existed. apply_sql_tolerant.sh now runs each ALTER separately and only skips MySQL errors 1060/1061/1091/1050 (duplicate column/key, missing to drop, table exists) — any other error still stops the migration immediately.