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

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 中存储表情符号的编码问题:如何使用 Prisma ORM 在 NodeJS 中定义字符排序规则?

    亲爱的 Nodejs 专家和数据库专家 我们在 MySQL 数据库中存储表情符号和其他特殊字符时遇到问题 我们使用 Prisma 得到一个错误 这是我们使用的 ORM 参数无法从排序规则 utf8 general ci 转换为 utf8mb
  • POINT 列上的 MySQL INSERT/UPDATE

    我正在尝试用我国家的地理位置填充我的数据库 我的一张表有 4 个字段 ID PK 纬度 经度和地理点 EDIT SCDBs Punto Geografico SET lat 18 469692 SET lon 63 93212 SET g
  • 在标准化数据库模式中是否可以有多个外键?

    Address addressID houseNumber postcode roadName city county Reservation reservationID roomNo leadGuestID guest2ID guest3
  • 如何在mysql中选择具有相同值集的列?

    我的桌子是 patients pid name city disease did dname has disease did pid 我想列出具有相同疾病组的患者 pid 和 did 分别是患者和疾病表中的主键 并且是 has diseas
  • Windows 8.1 升级后 Apache 无法工作 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 今天从 Windows 8 升级到 Windows 8 1 后 Apache 不再工作 我上次从 Windows 7 升级到 Window
  • 如何在 MySQL 中求和时间?

    正如您在图片中看到的 我有一份停机报告 显示了所选工厂在选定日期的停机时间 现在我想添加所有的值 Time Duration 列并将其显示在附近的单独显示中 TOTAL TIME DURATION 例如 在图像中 所选日期为 2015 年
  • MySQL 通过 current_timestamp 选择上个月的数据

    直到今天 当我使用 MySQL 并需要对日期 时间执行操作时 我使用带有 unix 时间戳的 int 列 没有出现任何问题 但今天在阅读了一些指南后 我决定默认使用 current timestamp 测试时间戳列 所以我感兴趣如何按列选择
  • db:schema:load 与 db:migrate 使用 capistrano

    我有一个 Rails 应用程序 我正在将其移动到另一台服务器 我认为我应该使用 db schema load 来创建 mysql 数据库 因为这是推荐的 我的问题是我正在使用 capistrano 进行部署 并且它似乎默认为 rake db
  • MySQL“LIKE”搜索不起作用

    我通过 LOAD DATA INFILE 在 MySQL 中导入了一个 txt 数据库 一切似乎都正常 唯一的问题是 如果我使用以下查询在数据库上搜索记录 SELECT FROM hobby WHERE name LIKE Beading
  • 使用Perl/DBI/MySQL/InnoDB查找外键信息

    我想以编程方式查找 MySQL 数据库中特定 InnoDB 表的外键 我正在使用 Perl 我偶然发现 dbh gt foreign key info 我刚刚尝试使用它 但似乎有点错误 它不会返回 ON DELETE 和 ON UPDATE
  • MySQL中如何声明变量?

    如何在mysql中声明一个变量 以便我的第二个查询可以使用它 我想写一些类似的东西 SET start 1 SET finish 10 SELECT FROM places WHERE place BETWEEN start AND fin
  • 在 SQL 中,如何从 SELECT * FROM ... 中排除结果?

    我知道我的标题不太具有描述性 让我在这里详细解释一下 假设一个表有 26 个字段 例如字段 a 字段 z 我只想要一个选择查询只返回 15 个字段 所以 通常 我会执行 SELECT field a field b field o FROM
  • 获取带有计数的不同记录

    我有一张桌子personid and msg列 personid msg 1 msg1 2 msg2 2 msg3 3 msg4 1 msg2 我想得到总计msg对于每个personid 我正在尝试这个查询 select distinct
  • mysql自动存储记录创建时间戳

    mysql 有什么方法可以在创建记录时自动将时间戳存储在记录行中 我试图使用时间戳 数据类型 和 current timestamp 作为默认值 但后来意识到每次更新记录时都会更新 我只需要一些可以存储创建时间戳的东西 Thanks Set
  • MySQL 追加字符串

    How can I append a string to the end of an existing table value Let s say I have the table below And let s say that Mari
  • 如何在代码中编辑约束

    我有一个以 100 开始宽度限制的网页 当用户单击按钮时 我想将约束更改为 200 我试过这个 NSLayoutConstraint constrain NSLayoutConstraint constraintWithItem self
  • 通过触发器应用表的列权限

    现在 我有一个名为 Members 的表 其中包含内容 分为联系人数据 银行数据 现在 管理员应该能够创建 更新 删除用户 这些用户保存在另一个表中 该表只能访问管理员 用户应该获得自己的 mysql 用户帐户 管理员还应该能够设置权限 例
  • mysql排序和排名语句

    我需要一些 mysql 语句的帮助 我的表 1 有 7 列 表 2 有 8 列 额外的列名为排名 我的语句应该是这样的 从表 1 中选择全部 然后按 用户数 排序 将其插入表 2 中并排名开始 1 2 3 等 table 1 usernam
  • MySQL 转储未知选项“-no-beep”

    在旧服务器上我使用了mysql转储命令来备份 MySQL 数据库 在新服务器上 MySQL 版本为 5 6 相同的命令给出了错误 unknown option no beep 无论它插入什么 我也在互联网上搜索过 但找不到任何帮助 在 my
  • post php mysql 的拆分关键字

    我有一个表存储帖子 ID 它的标签如下 Post id Tags 1 keyword1 keyword2 keyword3 我想循环遍历该表中的每一行并执行以下操作 将关键字1 关键字2 关键字3放入新表中 word id word val

随机推荐

  • 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