我們有一個包含數百個表的數據庫。使用foreign_keys的表使用INNODB。MySQL發現無效的外鍵
有時我們在開發,階段和生產數據庫之間傳輸數據(使用mysqldump
的單個表)。 mysqldump
禁用所有外鍵檢查以使導入數據變得容易。
因此,隨着時間的推移,我們的一些非生產型數據庫最終會出現一些孤兒記錄。
我正要寫一個腳本來查找和檢測整個MySQL數據庫的任何無效(指向缺少記錄的鍵)外鍵。
我知道我可以編寫一個查詢來逐個檢查每個表和fkey,但是認爲可能有一個工具可以做到這一點。
我會在寫這樣一個腳本之前檢查一下,看看是否已經有一個。
搜索谷歌有點...令人驚訝的是我什麼也沒找到。
你是什麼意思,'無效'?孤兒記錄?帶有FK的表指向不再存在的表? – 2012-08-10 18:14:21
您可以讓您的數據庫自動執行此操作(取決於您正在使用的數據庫引擎)並將其設置爲ON DELETE CASCADE,以保持參照完整性。 – 2012-08-10 18:18:40
除了stefans評論,請注意,您可以取消或更新兒童,您不必刪除它。 – TomDunning 2012-08-10 18:21:01