最近接了一個案子要幫忙轉一個magento2的網頁到aws.
客戶給了一個source code 和 幾個sql files.
因為SQL太大了,所以分成好幾個 1.sql,2,sql,3.sql,4.sql,5.sql files.
我import 第一個是沒問題,不過當我import 第二個時就會出現
create tablea時發生 MySQL error code 1215: “Cannot add foreign key constraint”.
網上找了很久。
試過把 set foreign_key = 0 也 沒有用。
我也試用先import 2.sql 在 import 1.sql 改變一下次序。發現,如果在空的database是沒有報錯。
這裡綜整了 13 種原因, 先從第一種開始檢查吧:
MySQL Error Code 1215: “Cannot add foreign key constraint”
mysqldump 出來的檔案,檔頭會有一段相容設定,檔尾也會有一段.
推測你的案例可能是受限於 email 單次size限制,對方使用 split 來切割.
你可以用 cp a1+a2+a3 total 這樣的方式,合併起來, 或是 cat a1 a2 a3 > total 這樣.
也可以補那段相容設定到每個檔案頭部跟尾巴(或是建立一個相容設定的檔案,然後append dump sql , 補上檔尾,轉向到新檔案,方法很靈活啦,看怎樣做比較適合個人手頭上機器有的指令,或是思維的慣性,沒有絕對),再依序執行.
檔頭可能長這樣
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
檔尾可能長這樣
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
另外,最好是有互動啦,像網路上這樣,畢竟不如現場.
不要射後不理,這樣不利於以後的人查找資料.這個案例是有解決嗎? 這個回答能不能用?
這才是重點啦.
海綿寶寶 通靈王不通靈一下
其實如果他寫出 query was 後面的 SQL statement
會比較有幫助
昨晚我們一群人在自我安慰
至少我們可以睡得著覺
那兩個中15億的傢伙
一定失眠一整晚了
誠祝海大永遠不失眠,
永遠睡得著覺。