mysql alter table FOREIGN KEY!

问题描述:

(我用的工作台),我有表questionsid, user_id, text和表users与领域id, namemysql alter table FOREIGN KEY!

我需要涉及这2个表!

我写如下:

ALTER TABLE `mydb_development`.`questions` 
ADD CONSTRAINT fk_QueUsers_1 
FOREIGN KEY (`user_id`) 
REFERENCES `mydb_development`.`users`(`id`); 

,但我得到:

ERROR 1046: No database selected 
SQL Statement: 
ALTER TABLE `questions` 
ADD FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) 

ERROR: Error when running failback script. Details follow. 

ERROR 1046: No database selected 
SQL Statement: 
CREATE TABLE `questions` (
    `id` int(11) unsigned NOT NULL AUTO_INCREMENT, 
    `user_id` int(11) unsigned NOT NULL, 
    `text` text NOT NULL, 
    `security_token` varchar(40) NOT NULL, 
    `created_at` datetime NOT NULL, 
    `updated_at` datetime NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB AUTO_INCREMENT=373 DEFAULT CHARSET=utf8 

ERROR 1046: No database selected 
SQL Statement: 
ALTER TABLE `questions` 
ADD FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) 

ERROR: Error when running failback script. Details follow. 

..................... 

编辑: 我试图做的:

USE `mydb_development`; 

ALTER TABLE `mydb_development`.`questions` 

ADD CONSTRAINT `fk_QueUsers_1` 

FOREIGN KEY (`user_id`) 

REFERENCES `mydb_development`.`users`(`id`); 

,我得到错误:

Error Code: 1005 
Can't create table 'survey_development.#sql-4ad_45' (errno: 150) 

不明白:S

编辑:

我的用户表:

DROP TABLE IF EXISTS `mydb_development`.`users`; 
CREATE TABLE `mydb_development`.`users` (
    `id` int(11) unsigned NOT NULL AUTO_INCREMENT, 
    `name` varchar(255) NOT NULL, 
    `email` varchar(255) NOT NULL, 
    PRIMARY KEY (`id`), 
    UNIQUE KEY `email` (`email`) 
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=latin1; 
+0

post_create for'survey_development' – shevski 2011-05-05 07:29:28

+0

尝试再次创建表格并添加约束条件添加索引 – shevski 2011-05-05 07:30:20

+0

请向我们展示编辑我的帖子的'users' – 2011-05-05 07:31:59

这似乎是MySQL的错误:

http://forums.mysql.com/read.php?22,19755,19755

尝试索引 'USER_ID' 并再次运行该脚本。

输入:

use `mydb_development`; 

变化约束名 'user_id说明' 的东西否则就像'fk_u ser_id”

+0

感谢您的回复,我编辑了,但没有,我更新了我的文章! – 2011-05-05 07:27:58

尝试选择你的数据库,看它是否有什么差别

USE `mydb_development`; 
+0

感谢您的回应,我编辑了,但没有,我更新了我的文章! – 2011-05-05 07:26:43

首先你要摆脱ERROR 1046: No database selected错误。

要做到这一点确保您:

  • 选择与USE mydb_development;
  • 数据库修改ALTER/CREATE语句包括分贝。例如。 ALTER TABLE mydb_development.questions
+0

感谢您的回复,我编辑过,但没有,我更新了我的帖子! – 2011-05-05 07:29:27

+0

看起来像一个不同的外键错误。寻找其他人对同一问题的解决方案:http://stackoverflow.com/search?q=foreign+key+150 – 2011-05-05 07:33:57