2013-10-20 87 views
1

我收到我的添加約束的錯誤。MYSQL ADD CONSTRAINT ERROR

我使用MySQL工作臺來創建MySQL工作臺表

消息錯誤: 錯誤代碼:1064您的SQL語法錯誤;在1號線

檢查對應於你的MySQL服務器版本正確的語法使用附近的人工「添加約束user_contact_ibfk1外鍵(user_id)參考`user_ac」難道這僅僅是我有一個版本的問題。我使用5.2.4.7

錯誤:

22:47:35 ADD CONSTRAINT user_contact_ibfk_1 FOREIGN KEY (user_id) REFERENCES user_account (user_id) ON DELETE CASCADE ON UPDATE CASCADE Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ADD CONSTRAINT user_contact_ibfk_1 FOREIGN KEY (user_id) REFERENCES `user_ac' at line 1 0.000 sec

-- 
-- Table structure for table `user_contact` 
-- 
CREATE TABLE IF NOT EXISTS `user_contact` (
    `contact_id` bigint(11) NOT NULL AUTO_INCREMENT, 
    `user_id` bigint(11) NOT NULL, 
    `first_name` varchar(25) NOT NULL, 
    `last_name` varchar(25) NOT NULL, 
    `email` varchar(50) NOT NULL, 
    `email_code` varchar(32) NOT NULL, 
    `cellnumber` decimal(32,0) NOT NULL, 
    `city` varchar(25) NOT NULL, 
    `state` varchar(25) NOT NULL, 
    `country` varchar(25) NOT NULL, 
    `username` varchar(50) NOT NULL, 
    PRIMARY KEY (`contact_id`), 
    UNIQUE KEY `user_id` (`user_id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=16 ; 

-- -------------------------------------------------------- 

-- 
-- Table structure for table `user_profile` 
-- 

CREATE TABLE IF NOT EXISTS `user_profile` (
    `profile_id` bigint(11) NOT NULL AUTO_INCREMENT, 
    `user_id` bigint(11) NOT NULL, 
    `username` varchar(50) NOT NULL, 
    `about_me` text NOT NULL, 
    `work_info` varchar(255) NOT NULL, 
    `education_info` varchar(255) NOT NULL, 
    `rating` float NOT NULL, 
    `user_image` varchar(1024) NOT NULL, 
    `friend_array` text NOT NULL, 
    `online_status` tinyint(1) NOT NULL, 
    PRIMARY KEY (`profile_id`), 
    UNIQUE KEY `user_id` (`user_id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=15 ; 

-- 
-- Table structure for table `user_account` 
-- 

CREATE TABLE IF NOT EXISTS `user_account` (
    `user_id` bigint(11) NOT NULL AUTO_INCREMENT, 
    `username` varchar(50) NOT NULL, 
    `password` varchar(50) NOT NULL, 
    `active` tinyint(1) NOT NULL DEFAULT '1', 
    `type` int(11) NOT NULL, 
    `online_status` tinyint(1) NOT NULL, 
    PRIMARY KEY (`user_id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=16 ; 

-- 
-- Constraints for table `user_contact` 
-- 
ALTER TABLE `user_contact` 
    ADD CONSTRAINT `user_contact_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `user_account` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE; 

-- 
-- Constraints for table `user_profile` 
-- 

ALTER TABLE `user_profile` 
ADD CONSTRAINT `user_profile_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `user_account`  (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE; 
+2

user_account表呢? – tanaydin

+0

對不起,我現在添加了它。 – user2901038

+1

它適用於我http://sqlfiddle.com/#!2/e9650 – Mihai

回答

0

可謂是一些內部錯誤與MySQL工作臺。我用phpmyadmin,它工作正常。

0

我能想到的唯一的事情就是外鍵名可能採取的,嘗試改變它。

ALTER TABLE `user_contact` 
    ADD CONSTRAINT `user_contact_ibfk_stuff` FOREIGN KEY (`user_id`) REFERENCES `user_account` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE; 

運行這個職位的結果

SELECT @@SESSION.sql_mode; 

或者直接運行這個命令:

SET SESSION SQL_MODE='NO_ENGINE_SUBSTITUTION'; 
+0

我試過改變它,但它只是給出了相同的錯誤 – user2901038

+0

@ user2901038你確保在你的問題中發佈的查詢與你正在運行的查詢是一樣的嗎? – Mihai

+0

是的,當我複製/粘貼它以確認時,我100%確定它。我的查詢中有其他表與約束無關。我是否應該添加它們? – user2901038

相關問題