尝试将多个外键添加到单个表时出错

2024-02-03

我正在尝试创建一个子表来约束来自父级的 3 个外键,但收到错误1215: 无法添加外键约束

父表:

    CREATE TABLE `Availability` (
   `time_of_day` varchar(20) NOT NULL,
   `day_of_week` varchar(20) NOT NULL,
   `email` varchar(60) NOT NULL,
   PRIMARY KEY (`time_of_day`,`day_of_week`,`email`),
   KEY `email` (`email`),
   CONSTRAINT `Availability_ibfk_1` FOREIGN KEY (`email`) REFERENCES `service_provider` (`email_service_provider`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8

子表(由于上述错误我无法构建):

CREATE TABLE TEST1
(
  num_request INT NOT NULL,
  time_of_day VARCHAR(20) NOT NULL,
  day_of_week VARCHAR(20) NOT NULL,
  email VARCHAR(60) NOT NULL,
    PRIMARY KEY (num_request),
    Foreign key (time_of_day) references Availability(time_of_day),
    Foreign key (day_of_week) references Availability(day_of_week),
    Foreign key (email) references Availability(email)
  );

请告诉我我做错了什么...谢谢大家。


当您为具有复合主键(即多列的键)的表创建外键时,您也应该将外键设为复合。

CREATE TABLE TEST1
(
  num_request INT NOT NULL,
  time_of_day VARCHAR(20) NOT NULL,
  day_of_week VARCHAR(20) NOT NULL,
  email VARCHAR(60) NOT NULL,
    PRIMARY KEY (num_request),
    Foreign key (time_of_day, day_of_week, email) references Availability(time_of_day, day_of_week, email)
)

外键的列应与其引用的主键或唯一键的列相匹配。它们应该具有相同的列数和相同的顺序。

您尝试做的是创建三个单独的约束,每个约束各一列。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

尝试将多个外键添加到单个表时出错 的相关文章

  • MySQL 创建和更新时的 CURRENT_TIMESTAMP

    我想定义一个有 2 个 TIMESTAMP 字段的表 如下所示 CREATE TABLE msgs id INT PRIMARY KEY AUTO INCREMENT msg VARCHAR 256 ts create TIMESTAMP
  • 语言翻译语法

    我正在尝试为我的项目添加另一种语言 我们知道语言可以表现出主语和谓语的差异 例如 英语 Mustafa和他的朋友去看电影ahmet today 土耳其 Mustafa布昆 阿卡达西ahmetile birlikte sinemaya git
  • 从多个表中选择 - 一对多关系

    我有这样的表 表产品 身份证 姓名 表格图像 产品 ID 网址 订单号 表价 产品 ID 组合 货币 价格 表数量 产品 ID 组合 数量 表 Product 与其他表是一对多关系 我需要查询表并得到类似这样的结果 伪数组 ProductI
  • UNIX时间记录时区吗?

    我想问一下UNIX时间 UNIX时间是否记录时区 我将托管从美国芝加哥移至 JST 问题是我的整个 MySQL 数据库都有 UNIX 时间 芝加哥 美国时区 的记录 我有一个 PHP 代码来显示之前的时间 例如 3 天前 昨天等 当我搬到新
  • 使用 pip3 安装 mysqlclient 时遇到问题

    我正在尝试使用 Django 设置 python 3 6 环境 安装说明说我应该安装 mysqlclient 才能连接到 mySQL 我明白了 dennis django sudo H pip3 install mysqlclient Co
  • mySQL 返回可能有重复项的随机行

    我正在尝试随机化一定数量的行 但假设数据库中只有 4 行 而我需要获得 6 个随机行 我希望有可能 即使表中有超过 6 行 产生重复的行行 这在 mySQL 中很容易实现吗 我当前的查询是这样的 SELECT FROM winners OR
  • 按 MAX(time) WHERE time <= x 选择最近的 MySQL 行

    我正在选择 MySQL 表的最新条目 SELECT MAX time as most recent userID FROM TableName GROUP BY userID ORDER BY most recent DESC 我的问题是
  • MySQL 错误 1290 (HY000) --secure-file-priv 选项

    我试图在我的脚本中使用以下代码将 MySQL 脚本的结果写入文本文件 SELECT p title p content c name FROM post p LEFT JOIN category c ON p category id c i
  • ER_ACCESS_DENIED_ERROR:用户 ''@'localhost' 的访问被拒绝(使用密码:NO)

    我有这个问题 我已经研究过但无法解决它 我想它与数据库权限有关 但我无法修复它 if error throw error Error ER ACCESS DENIED ERROR Access denied for user localho
  • 是否可以使用“WHERE”子句来选择SQL语句中的所有记录?

    晚上好 我很好奇是否可以在 SQL 语句中创建一个 WHERE 子句来显示所有记录 下面一些解释 随机 SQL 语句 Java JSP示例 正常情况 String SqlStatement SELECT FROM table example
  • 执行许多插入重复键更新错误:未使用所有参数

    所以我一直在尝试使用 python 2 7 15 使用 mysql connector 执行此查询 但由于某种原因 它似乎不起作用并且总是返回错误 并非所有参数都被使用 表更新有一个主键 即 ID 这是我尝试运行此 SQL 的查询 sql
  • 在mysql中搜索“SanF”时获取旧金山的记录

    当我搜索 SanF 时获得 San Francisco 记录 SELECT FROM table WHERE col LIKE san Works SELECT FROM table WHERE col LIKE san F Works S
  • SQL 大表中的随机行(使用 where 子句)

    我有一个网站 人们可以在其中对汽车进行投票 向用户展示 4 辆汽车 他 她可以投票选出他们最喜欢的汽车 桌子cars有重要的列 car id int 10 not auto increment so has gaps views int 7
  • Laravel Sum 列数据库 Eloquent

    尝试获取我的一个表中 int 字段的总和应该非常容易 不幸的是 事实并非如此 因为无论我使用 Laravel MySQL 还是 Excel 我都会得到不同的结果 Laravel 5 4 给了我20506 Table sum field na
  • PHP 的 PDO 可以限制为单个查询吗?

    PHP 的 PDO 允许通过 query 方法或作为准备好的语句同时执行多个查询 以下两个示例均有效 Two SQL queries query SELECT FROM table DROP table Execute via query
  • 数据表 - 服务器端处理 - 数据库列合并

    我目前正在使用 DataTables 1 10 5 服务器端处理功能 http www datatables net examples data sources server side html http www datatables ne
  • 我可以在一个查询中更新/选择表吗?

    我需要在查看页面时选择数据并更新 视图 列 有没有一种方法可以在一个查询中执行此操作 或者我是否必须使用不同的查询 如果您不想 不需要使用事务 则可以创建一个存储过程 该过程首先更新视图计数 然后选择值并将其返回给用户
  • 如何使用 PHP 从 MySQL 检索特定值?

    好吧 我已经厌倦了 过去一周我花了大部分空闲时间试图解决这个问题 我知道 SQL 中的查询已更改 但我无法弄清楚 我能找到的所有其他帖子似乎都已经过时了 如果有人能帮助我 我将非常感激 我想做的就是使用手动输入数据库的唯一 密码 来检索行的
  • 让 Prometheus 发送 SQL 查询

    我正在尝试使用普罗米修斯 https prometheus io 监视我的 MySQL 数据库 但似乎找不到添加 SQL 查询的区域 例如 我想运行一个返回值的 SQL 查询 然后将该值添加到图表中 发送警报 有没有办法让 Promethe
  • 哪个是识别关系或非识别关系中的子表?

    在表之间的识别和非识别关系的上下文中 MySQL 文档大量将表称为父表和子表 如何判断哪个表是父表 哪个表是子表 子表 A K A 弱实体 http en wikipedia org wiki Weak entity 是一个表 其主键属性d

随机推荐

  • VSCode:用户设置中的 TextMate 正则表达式

    我正在尝试更改主题以更适合我的日常使用 但在尝试自定义特定单词或模式时遇到了一些麻烦 我现在正在使用这种格式 editor tokenColorCustomizations textMateRules scope comment setti
  • 如何使用 Spark 计算累积和

    我有一个 String Int 的 rdd 它按键排序 val data Array c1 6 c2 3 c3 4 val rdd sc parallelize data sortByKey 现在我想以零开始第一个键的值 并将后续键作为先前
  • Eclipse 中的 Jetty 8.1.1.v20120215 和 web 应用程序 (JSF + Maven)

    我正在尝试在 Eclipse 中运行我的 web 应用程序 使用 JSf Jetty 8 1 1 v20120215 我下载了 Jetty Adapter 然后在 Eclipse 中添加了 Jetty Server 8 1 然后我在 Jet
  • 如何开始使用 Perl 进行网页抓取?

    我有兴趣学习 Perl 我正在使用 Learning Perl 书籍和 cpan 的网站作为参考 我期待着使用 Perl 做一些网页 文本抓取应用程序来应用我所学到的东西 请建议我一些好的选择 这不是家庭作业 想要在 Perl 中做一些事情
  • WebRTC、捕获屏幕

    我当前的问题是 我想找到一种在 Android 上的 webrtc 连接期间捕获帧 屏幕截图的方法 我知道这里已经有一些解决方案 但没有一个对我有用 按照我目前的方法 我遵循了这个Gist https gist github com Eri
  • 如何在 Python 中从 JavaScript CryptoJS.AES.encrypt(password, passphrase) 解密密码

    我有一个通过 JavaScript 加密的密码 var password sample var passphrase sample passphrase CryptoJS AES encrypt password passphrase 然后
  • Jenkins Pipeline:查看子构建作业的日志

    我有一个詹金斯管道正在运行 作业 作为其阶段之一 我想知道 有没有一种方法可以查看管道中构建作业的日志 而无需单击作业并查看控制台输出 这只会让您更容易地看到失败 而无需多次点击 是的 有一种方法可以做到这一点 不幸的是它看起来没有记录 T
  • NodeJS - Socket.IO 设置:提供静态内容,无需握手(Rackspace 云服务器上的 Ubuntu)

    我已经在 Rackspace 上安装了 Ubuntu node js 和 Socket IO 当我尝试一个简单的服务器应用程序并尝试使用客户端请求时 我仅得到 提供的静态内容 而不是握手 在调试中的浏览器中 我可以看到 Hello S 在服
  • SQL Server:如何中止查询分析器中的一系列批处理?

    我有一系列由特殊查询分析器批处理分隔符关键字分隔的 T SQL 语句 GO 如果一个批次失败 我需要查询分析器不要尝试后续批次 我希望它停止处理这一系列批次 例如 PRINT This runs go SELECT 0 0 This cau
  • 在通知系统中每个通知要插入多少行?

    继从这个问题 https stackoverflow com questions 9735578 building a notification system我正在考虑构建一个类似的通知系统 并且我有一个问题 我认为它有一个明显的答案 但我
  • ó 在 xml 文件中不允许,但在 .net 资源文件中允许?

    我正在解析一些 net 资源文件 resx 其中 我有这样的数据 informaci oacute n 这适用于我的 net 应用程序 但是当我尝试在我的 xml 文档中加载此文件时 XDocument xmlDoc XDocument P
  • 如何查看mysql连接的默认端口号?连接不工作! jdbc连接

    我正在尝试使用 java 文件中的 jdbc 连接数据库 它根本无法连接并不断给我错误 出了问题 我猜这是因为端口号 因为所有其他数据 例如用户名 密码和其他代码 似乎都是正确的 我想检查默认端口号 以便我可以正确尝试 我确实尝试使用所有这
  • Windows 上的 Mongodb 性能

    我最近一直在研究可用于 NET 的 nosql 选项 并且 MongoDB 在可用性和支持方面明显成为赢家 所以今晚我决定尝试一下 我从 mongodb 站点下载了版本 1 2 4 Windows x64 二进制 并使用以下选项运行它 C
  • 将对象序列化为 JSON、XML、YAML?

    我之前问过有关序列化和验证的问题 有人提到使用 JSON gem 它允许我告诉我的对象如何使用to json方法 然而 Ruby 似乎很容易做很多复杂的事情 但另一方面 一些非常简单的事情似乎相当复杂 序列化就是其中之一 我想知道是否有办法
  • Java 1.3.1,编译器错误

    我正在使用一台新的工作计算机 上面有一个旧的 sdk Java 1 3 1 并且想看看我是否可以在它上做一些课堂作业 我从我们的教授那里得到了这个文件 它可以在课堂上的他的机器上运行 当我运行它时 我收到编译器错误 我在线检查了 Java
  • Pandas:当DataFrame描述返回的计数是浮点数时有哪些情况

    在描述我的 Pandas 数据框时 我得到以下结果 Mains 1 Power Mains 2 Power count 17 000000 17 000000 mean 57 063528 200 428607 std 67 605151
  • 错误:DateTime 类的对象无法转换为字符串

    我在显示值时遇到错误 thedate row2 date echo thedate 在 php 中 数据库 thedate 中的值是 2015 05 05 21 52 31 000 如何格式化它以便能够将其作为字符串显示在 php 页面上
  • ORA-00910: 指定的长度对于其数据类型来说太长

    我在Oracle中有一个列来存储评论Nvarchar2 2000 当用户尝试输入超过 2000 个字符时 我收到以下错误 ORA 00910 specified length too long for its datatype The NL
  • FileSystemWatcher 不适用于从 Windows 服务创建的文件

    我正在从本地系统帐户下运行的 Windows 服务创建文件 我有一个 Windows 应用程序 用于监视创建文件的指定文件夹 我正在使用 FileSystemWatcher 但它不会触发 Windows 资源管理器中的文件图标是一个挂锁图标
  • 尝试将多个外键添加到单个表时出错

    我正在尝试创建一个子表来约束来自父级的 3 个外键 但收到错误1215 无法添加外键约束 父表 CREATE TABLE Availability time of day varchar 20 NOT NULL day of week va