1

制約の追加でエラーが発生します。

MYSQL ワークベンチを使用してテーブルを作成しています

MYSQL ワークベンチからのメッセージ エラー: エラー コード: 1064 SQL 構文にエラーがあります。MySQL サーバーのバージョンに対応するマニュアルで、1 行目の 'ADD CONSTRAINT user_contact_ibfk1FOREIGN KEY( user_id) REFERENCES `user_ac'付近で使用する正しい構文を確認してください。

これは私が抱えているバージョンの問題かもしれません。私は5.2.4.7を使用しています

エラー:

22:47:35 ADD CONSTRAINT user_contact_ibfk_1FOREIGN KEY ( user_id) REFERENCES user_account( user_id) ON DELETE CASCADE ON UPDATE CASCADE エラー コード: 1064。SQL 構文にエラーがあります。user_contact_ibfk_1'ADD CONSTRAINT FOREIGN KEY ( user_id) REFERENCES `user_ac' at line 1 0.000 sec付近で使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

--
-- 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;
4

2 に答える 2

0

MYSQL ワークベンチの内部バグであることが判明しました。私はphpmyadminを使用しましたが、うまくいきました。

于 2014-05-05T12:37:47.400 に答える
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';
于 2013-10-20T21:27:00.773 に答える