Repair MySQL auto increment drift for core tables
This commit is contained in:
@@ -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;");
|
||||
|
||||
Reference in New Issue
Block a user