2011-11-28 51 views
0

我曾嘗試:如何將所有表的DELETE_RULE更改爲CASCADE?

use information_schema 
update referential_constraints set delete_rule='cascade'; 

而且得到了以下錯誤:

ERROR 1044 (42000): Access denied for user 'root'@'localhost' to database 'information_schema'

我有所有權限。

+0

你確定你擁有所有權限?它看起來像你不小心刪除了一些。你能發佈'SHOW GRANTS;'的輸出嗎('在'root'MySQL用戶下的MySQL控制檯中運行)。 –

+3

這是因爲information_schema無法修改。你應該逐個更改每個表格。 – Devart

回答

1

Information_schema正是:信息。它在你的數據庫

要在數據庫對象,你需要在它們上面運行的變化改變的對象的報告。你不能做到這一點通過Information_schema意見

+0

您可以使用'information_schema'以「打造」了'ALTER'語句的話,你必須對你的表的外鍵運行,但僅此而已,它會幫助你。正如@gbn所說,你仍然需要執行幾個'ALTER'語句。 – Romain

+1

@Romain:是的,有可能的腳本已經在那裏做這個 – gbn

+0

我wouln't感到驚訝。雖然他們不會非常難以從頭開始寫... :) – Romain

0

歐凱,即

選擇「更改表」,表名,「刪除外鍵」,constraint_name命令,「;」, 「變更表」,表名, 'ON DELETE CASCADE '添加約束',constraint_name命令, '外鍵', '(',列名, ')引用了',referenced_table_name, '(',referenced_column_name);'來自key_column_usage的 其中referenced_table_name不爲空;

相關問題