mysql - PHPMyAdmin Mysql 在 <attribute> 上创建外键时出错(检查数据类型)

标签 mysql

我已经阅读了几篇文章,但无法解决在 phpMyAdmin 中创建外键的问题。我有以下两个架构:

CREATE TABLE `verifieduser` (
  `id` int(11) NOT NULL,
  `name` varchar(50) NOT NULL,
  `email` varchar(50) NOT NULL,
  `password` varchar(50) NOT NULL,
  `country` varchar(50) NOT NULL,
  `location` varchar(50) NOT NULL,
  `rname` varchar(50) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE `restaurant` (
  `location` varchar(50) NOT NULL,
  `cuisine` varchar(30) NOT NULL,
  `description` varchar(200) NOT NULL,
  `phone` varchar(20) NOT NULL,
  `rname` varchar(50) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

ALTER TABLE `restaurant`
  ADD PRIMARY KEY (`location`,`rname`),
  ADD UNIQUE KEY `phone` (`phone`);

我试图让 verifyuser 表中的 rname 成为餐厅表中 rname 的外键。我不确定为什么它不允许我这样做,因为它具有相同的值,并且我没有将约束更改为“SET NULL”。

提前致谢。

最佳答案

在上面的查询中,您没有将rname设置为restaurant的主键,我认为这就是问题所在。在我看来,您应该在 restaurant 中有一个列名 id ,它应该是主键,在 verifieduser 中您应该有 rid 作为餐厅

的外键

关于mysql - PHPMyAdmin Mysql 在 <attribute> 上创建外键时出错(检查数据类型),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42710838/

相关文章:

java - B 类构造函数的参数 0 需要 A 类类型的 bean,但无法找到

php - stmt 执行数组并获取

java - 当字段值相等时,@Embeddable 的 @ElementCollection Map 不会保留

mysql - 在mysql数据库中替换

php - 使用 php 从数据库填充 HTML 下拉框,但我缺少一条记录

php - 仅更改 sql 返回的数组的一个值

mysql多表select语句

php - 我如何从数据库中检索数据,条件是数据应在 6 个月之前添加,并且产品数量应高于 200

php - HTML 表单使用 PHP 将日期字段传递到 MySQL 数据库

php - 从 Laravel 框架创建一个在线用户(问题)