Repair MySQL auto increment drift for core tables

This commit is contained in:
2026-04-09 21:00:04 +02:00
parent 0fdfcd727d
commit b6a36cd860
+36
View File
@@ -861,6 +861,42 @@ CREATE TABLE IF NOT EXISTS "TailoredCvDrafts" (
ddlCmd.ExecuteNonQuery();
}
static bool MySqlIntPrimaryKeyIsAutoIncrement(MySqlConnection c, string table, string column)
{
using var cmd = c.CreateCommand();
cmd.CommandText = @"SELECT EXTRA
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = @schema AND TABLE_NAME = @table AND COLUMN_NAME = @column
LIMIT 1;";
cmd.Parameters.AddWithValue("@schema", c.Database);
cmd.Parameters.AddWithValue("@table", table);
cmd.Parameters.AddWithValue("@column", column);
var extra = cmd.ExecuteScalar()?.ToString() ?? string.Empty;
return extra.Contains("auto_increment", StringComparison.OrdinalIgnoreCase);
}
static void EnsureMySqlAutoIncrementPrimaryKey(MySqlConnection c, string table, string column)
{
if (!HasMySqlTable(c, table) || !MySqlColumnExists(c, table, column) || MySqlIntPrimaryKeyIsAutoIncrement(c, table, column))
{
return;
}
using var cmd = c.CreateCommand();
cmd.CommandText = $"ALTER TABLE `{table}` MODIFY COLUMN `{column}` int NOT NULL AUTO_INCREMENT;";
cmd.ExecuteNonQuery();
}
EnsureMySqlAutoIncrementPrimaryKey(conn, "Companies", "Id");
EnsureMySqlAutoIncrementPrimaryKey(conn, "JobApplications", "Id");
EnsureMySqlAutoIncrementPrimaryKey(conn, "Correspondences", "Id");
EnsureMySqlAutoIncrementPrimaryKey(conn, "Attachments", "Id");
EnsureMySqlAutoIncrementPrimaryKey(conn, "JobEvents", "Id");
EnsureMySqlAutoIncrementPrimaryKey(conn, "GmailConnections", "Id");
EnsureMySqlAutoIncrementPrimaryKey(conn, "CvUploadArtifacts", "Id");
EnsureMySqlAutoIncrementPrimaryKey(conn, "CvExtractionRuns", "Id");
EnsureMySqlAutoIncrementPrimaryKey(conn, "TailoredCvDrafts", "Id");
EnsureMySqlColumn(conn, "Companies", "OwnerUserId", "ALTER TABLE `Companies` ADD COLUMN `OwnerUserId` varchar(255) NULL;");
EnsureMySqlColumn(conn, "Companies", "Source", "ALTER TABLE `Companies` ADD COLUMN `Source` longtext NULL;");
EnsureMySqlColumn(conn, "Companies", "RecruiterName", "ALTER TABLE `Companies` ADD COLUMN `RecruiterName` longtext NULL;");