diff --git a/go/vt/vttablet/onlineddl/schema.go b/go/vt/vttablet/onlineddl/schema.go index 3022b3736bc..cbae743ac7f 100644 --- a/go/vt/vttablet/onlineddl/schema.go +++ b/go/vt/vttablet/onlineddl/schema.go @@ -393,6 +393,12 @@ const ( AND cleanup_timestamp IS NULL AND completed_timestamp IS NULL ` + sqlFixRequestedTimestamp = `UPDATE _vt.schema_migrations + SET + requested_timestamp = added_timestamp + WHERE + requested_timestamp < added_timestamp; + ` sqlSelectMigration = `SELECT id, migration_uuid, @@ -612,6 +618,13 @@ var ( var ApplyDDL = []string{ sqlCreateSidecarDB, sqlCreateSchemaMigrationsTable, + // Fixing a historical issue: past values of requested_timestamp could be '0000-00-00 00:00:00'. + // In turn, those cause `ERROR 1292 (22007): Incorrect datetime value` when attempting to + // make any DDL on the table. + // We trust added_timestamp to be non-zero (it defaults CURRENT_TIMESTAMP and never modified), + // and so we set requested_timestamp to that value. + // The query makes a full table scan, because neither column is indexed. + sqlFixRequestedTimestamp, // end of fix alterSchemaMigrationsTableRetries, alterSchemaMigrationsTableTablet, alterSchemaMigrationsTableArtifacts,