2010-10-22 32 views

回答

2

您需要通過從mysql提示符處運行以下命令來確保MySQL表正在使用InnoDB引擎。

show create table cred_insurances 

輸出將包括(朝底部)文本ENGINE=...。如果它不是InnodDB,那麼您首先需要使用以下SQL進行轉換。您可能還需要對父表執行此操作。

ALTER TABLE cred_insurances ENGINE=InnoDB 

然後你就可以添加在柱上,用下面的命令一個外鍵約束:

ALTER TABLE cred_insurances 
    ADD practice INT, 
    ADD CONSTRAINT fk_practice 
    FOREIGN KEY (practice) REFERENCES practices (ID) 

如果您有錯誤的困難,同時加入了一個外鍵,嘗試使用以下命令獲取有關錯誤的更多詳細信息。

SHOW ENGINE INNODB STATUS 
+0

@ar:我改變了兩個表InnoDB好,但我一直收到「ERROR 1005(HY000):無法創建表'./credentialing1/#sql-8e1_58.frm'(errno:150)」當我運行命令。建議嗎? – 2010-10-23 12:55:23

+0

@ar:在更改回MyISAM後,我能夠執行您的命令,但是如何驗證它呢? – 2010-10-23 15:20:45

+0

@ar:在沒有任何ISAM的情況下,我能夠做到我需要的東西來改變InnoDB。爲什麼你覺得有必要增加這種複雜性?必須有一些令人信服的理由,不是嗎? – 2010-10-25 17:17:56