Twój problem polega na tym, że nie nazywasz wyraźnie swoich ograniczeń. Dzięki temu każda baza danych wybierze dla Ciebie nazwę. Sztuczka polega na tym, aby jawnie nazwać ograniczenia kluczy obcych podczas tworzenia rzeczywistych tabel zarówno w MySQL, jak i 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
);
Ale naprawienie twojej bezpośredniej sytuacji wymagałoby więcej pracy. Jedną z opcji byłoby zapytanie tabeli schematu informacji dla danej tabeli, aby znaleźć rzeczywiste nazwy ograniczeń:
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;
Powinno to zwrócić jeden rekord dla każdej kolumny i ograniczenia. Dzięki tym informacjom powinieneś być w stanie uruchomić swoje bieżące instrukcje alter.
Jest to dość łatwe przy użyciu narzędzia takiego jak Java lub coś podobnego. Jeśli chcesz to zrobić bezpośrednio z bazy danych, potrzebujesz dynamicznego SQL, co prawdopodobnie oznacza napisanie procedury składowanej.