Я пишу PHP-приложение, которое должно создавать новые базы данных по мере добавления данных. Я хочу, чтобы простой и простой способ определить, как должны выглядеть созданные базы данных (то есть, какие таблицы они содержат, какие индексы должны содержать эти таблицы ...), и в настоящее время это диаграмма EER в MySql Workbench, которую я затем перестраиваю на сервер. Я не считаю много CREATE-операторов в PHP-коде «приятным и простым». Запущенный некоторым событием в приложении PHP, мне нужно сделать что-то, что создает новую базу данных с указанным именем, которое является копией базы данных шаблонов.MySQL создает базу данных в соответствии с базой шаблонов
Это Сорта дубликат этого вопроса:
MySQL copy/duplicate database
Но ответы на этот вопрос не подходит для меня.
Я не хочу использовать mysqldump, потому что я не могу взять на себя риск выполнения кода оболочки на сервере, который может быть уязвим для ввода кода, поскольку имя создаваемой базы данных должно быть вставлено. Также this.
Я также не хочу разбивать базу данных отдельно с помощью SHOW-операторов и вручную выполнять инструкции CREATE, чтобы сшить новую базу данных, потому что это становится громоздким быстро и может не захватывать все аспекты базы данных шаблона и, следовательно, найти ошибки. Я также не уверен, насколько хорошо этот метод обрабатывает внешние ключи, когда таблица ссылок создается до указанной.
В идеале я хотел бы использовать простой оператор SQL, такой как CREATE DATABASE ? LIKE TemplateDatabase
(где? Представляет собой имя базы данных в некотором виде подготовленного оператора). К сожалению, хотя в MySQL нет такой функциональности.
Очевидно, PostgreSQL может сделать что-то подобное просто отлично, но я не хочу мигрировать только из-за одной функции.
Как это можно выполнить при выполнении вышеупомянутых ограничений?
'CREATE DATABASE?' Вы не можете привязывать таблицы/столбцы, период. Используйте список надежных списков. –
@ Fred-ii- Прошу прояснить, что вы имеете в виду под «safelist» –