(我使用workbench)我有tablequestionswithid, user_id, text和tableuserswith fieldsid, name
我需要把这两张表联系起来!
我写了如下:

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;

最佳答案

这似乎是mysql错误:
阅读http://forums.mysql.com/read.php?22,19755,19755
尝试索引“用户id”,然后再次运行脚本。

10-04 19:45