Ditt problem är att du inte uttryckligen nämner dina begränsningar. Detta låter varje databas välja ett namn åt dig. Tricket här är att namnge dina främmande nyckelbegränsningar uttryckligen när du skapar de faktiska tabellerna på både MySQL och MariaDB:
CREATE TABLE job_template (
...,
parent_id int NOT NULL,
CONSTRAINT your_constraint FOREIGN KEY fk_name (parent_id)
REFERENCES job_template(id) ON DELETE CASCADE
);
Men att fixa din omedelbara situation skulle kräva mer arbete. Ett alternativ skulle vara att fråga informationsschematabellen för den berörda tabellen för att ta reda på de faktiska begränsningsnamnen:
USE INFORMATION_SCHEMA;
SELECT
TABLE_NAME,
COLUMN_NAME,
CONSTRAINT_NAME,
REFERENCED_TABLE_NAME,
REFERENCED_COLUMN_NAME
FROM KEY_COLUMN_USAGE
WHERE
TABLE_SCHEMA = 'your_db' AND
TABLE_NAME = 'job_template' AND
REFERENCED_COLUMN_NAME IS NOT NULL;
Detta bör returnera en post för varje kolumn och begränsning. Med den här informationen bör du kunna köra dina nuvarande alter-satser.
Detta är lätt nog att göra med hjälp av ett verktyg som Java eller något liknande. Om du vill göra detta direkt från databasen behöver du dynamisk SQL, vilket förmodligen innebär att skriva en lagrad procedur.