Il tuo problema è che non stai nominando esplicitamente i tuoi vincoli. Questo lascia ogni database a scegliere un nome per te. Il trucco qui è nominare esplicitamente i vincoli di chiave esterna, quando crei le tabelle effettive sia su MySQL che su 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
);
Ma risolvere la tua situazione immediata richiederebbe più lavoro. Un'opzione potrebbe essere quella di interrogare la tabella dello schema delle informazioni, per la tabella coinvolta, per scoprire i nomi dei vincoli effettivi:
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;
Questo dovrebbe restituire un record per ogni colonna e vincolo. Con queste informazioni, dovresti essere in grado di eseguire le tue attuali dichiarazioni di modifica.
Questo è abbastanza facile da fare usando uno strumento come Java o qualcosa di simile. Se vuoi farlo direttamente dal database, allora avresti bisogno di SQL dinamico, il che probabilmente significa scrivere una procedura memorizzata.