我的添加约束出现错误。
我正在使用MYSQL工作台来创建表
MYSQL工作台的消息错误:
错误代码:1064您的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册,以便在第1行使用“ADD CONSTRAINT user_contact_ibfk1
FOREIGN KEY(user_id
)REFERENCES”user_ac'附近使用正确的语法
这可能只是我遇到的版本问题。我正在使用5.2.4.7
错误:
22:47:35 ADD CONSTRAINT
user_contact_ibfk_1
FOREIGN KEY(user_id
)参考user_account
(user_id
)ON DELETE CASCADE ON UPDATE CASCADE错误代码:1064。你有SQL语法中的错误;检查与MySQL服务器版本对应的手册,以便在'ADD CONSTRAINTuser_contact_ibfk_1
FOREIGN KEY(user_id
)附近使用正确的语法参考`user_ac'在第1行0.000秒
--
-- 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;
答案 0 :(得分:0)
我唯一能想到的是可能会采用FOREIGN KEY名称,尝试更改它。
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';
答案 1 :(得分:0)
原来是MYSQL工作台的一些内部错误。我使用phpmyadmin并且工作正常。