我正在編寫一個PHP應用程序,需要在添加數據時創建新的數據庫。我想要一個很好很簡單的方式來指定創建的數據庫應該是什麼樣子的(例如,它們包含哪些表,這些表應該包含哪些索引,...),這是當前在MySql Workbench中的一個EER圖,然後我將它轉發到工程師上服務器。我不認爲很多PHP代碼中的CREATE語句「非常簡單」。由PHP應用程序中的某個事件觸發,我需要做一些操作,創建一個具有指定名稱的新數據庫,該名稱是模板數據庫的副本。MySQL根據模板數據庫創建數據庫
這是八九不離十這個問題的重複:
MySQL copy/duplicate database
但回答這個問題不適合我。
我不想使用mysqldump,因爲我無法承受在服務器上執行shell代碼的安全風險,因爲必須插入已創建的數據庫的名稱,這可能容易受到代碼注入的影響。還有this。
我也不想用SHOW語句拆分數據庫,而是手動執行CREATE語句將新數據庫拼接在一起,因爲這樣會變得很麻煩,並且可能無法捕獲模板數據庫的所有方面,因此很難引入發現錯誤。我也不確定當引用表在引用表之前被創建時,這個方法如何處理外鍵。
理想情況下,我想使用一個簡單的SQL語句,如CREATE DATABASE ? LIKE TemplateDatabase
(其中?代表某種形式的準備語句中的數據庫名稱)。不幸的是,儘管在MySQL中似乎沒有這種功能。
顯然PostgreSQL可以做到這一點很好,但我不想僅僅因爲一個特性而遷移。
如何在滿足上述約束的情況下完成這項工作?
'CREATE DATABASE?'你不能綁定表/列,句號。使用安全列表。 –
@ Fred-ii-請說明你的意思是「安全列表」 –