mariadb 如何通过更新FOREIGN KEY来改变表

zsbz8rwp  于 11个月前  发布在  其他
关注(0)|答案(2)|浏览(79)

我是新的数据库phpmyadmin在这里我的查询是给错误

ALTER TABLE students
ADD CONSTRAINT fk_enrollment_student
FOREIGN KEY (student_id)
REFERENCES enrollments (student_id);

这是我的表的结构

表:学生x1c 0d1x
表:入组人数

Table:courses

出现此错误

SQL查询控制台控制台ascendingdescendingOrder:调试SQL执行order所用时间排序依据:组查询获取SQL调试信息时出错。选项设置默认值始终展开查询消息开始时显示查询历史显示当前浏览查询按Enter键执行查询并使用Shift+Enter插入新行。若要使其永久化,请查看设置。切换到黑暗主题存储引擎InnoDB文档支持事务、行级锁定、外键和表加密
变量|缓冲液池|InnoDB状态]

= 2023-06-22 20:29:21 0x 27 b 0 INNODB监视器输出

从最近13秒开始计算的每秒平均值

后台线程

srv_master_thread循环:15 srv_active,0 srv_shutdown,6417 srv_idle srv_master_thread日志刷新和写入:6432

信号

OS等待数组信息:reservation count 41 OS WAIT ARRAY信息:信号计数器34 RW共享旋转39,轮次803,OS等待26 RW-例外旋转2,轮次1,OS等待0 RW-sx旋转0,轮次0,OS等待0每次等待旋转轮次:20.59 RW-shared,0.50 RW-excl,0.00 RW-sx

最新外键错误

2023-06-22 20:27:38 0x 27 b 0表assignment1的外键约束错误。students

FOREIGN KEY(student_id)REFERENCES enrollments(student_id):在被引用的表中找不到索引,其中被引用的列显示为第一列,或者表和被引用的表中的列类型与约束不匹配。请注意,使用>= InnoDB-4.1.12创建的表中ENUM和SET的内部存储类型发生了变化,旧表中的这些列不能被新表中的这些列引用。请参考https://mariadb.com/kb/en/library/foreign-keys/以获得正确的外键定义。更改表assignment1。带外键约束的students失败。在被引用的表中没有索引,其中被引用的列显示为“FOREIGN KEY(student_id)REFERENCES enrollments(student_id)”附近的第一列。

交易

Trx id counter 44 Purge done for trx的n:o < 44 undo n:o < 0状态:运行但空闲历史列表长度18每个会话的事务列表:-TRANSACTION 283841125138576,未启动0锁结构,堆大小1128,0行锁

文件I/O

I/O线程0状态:本机aio句柄(插入缓冲区线程)I/O线程1状态:本机aio句柄(日志线程)I/O线程2状态:本机aio句柄(读线程)I/O线程3状态:本机aio句柄(读线程)I/O线程4状态:本机aio句柄(读线程)I/O线程5状态:本机aio句柄(读线程)I/O线程6状态:本机aio句柄(写线程)I/O线程7状态:本机aio句柄(写线程)I/O线程8状态:本机aio句柄(写线程)I/O线程9状态:本机aio句柄(写线程)挂起正常aio读取:[0,0,0,0],aio写道:[0,0,0,0],ibuf aio读取:,log i/o:,sync i/o:挂起刷新(fsync)日志:0;缓冲池:0 181操作系统文件读取,409操作系统文件写入,136操作系统fsyncs 0.00读取/s,0平均字节/读取,0.00写入/s,0.00 fsyncs/s

插入缓冲器和自适应哈希索引

Ibuf:size 1,free list len 0,seg size 2,0合并合并操作:插入0、删除标记0、删除0丢弃操作:插入0,删除标记0,删除0哈希表大小4441,节点堆有0个缓冲区(s)哈希表大小4441,节点堆有0个缓冲区(s)哈希表大小4441,节点堆有0个缓冲区(s)哈希表大小4441,节点堆有0缓冲区(s)哈希表大小4441,节点堆有0缓冲区哈希表大小4441,节点堆具有0个缓冲区哈希表大小4441,节点堆具有0个缓冲区哈希表大小4441,节点堆具有0个缓冲区0.00哈希搜索/秒,3.92非哈希搜索/秒

日志

日志序列号75829日志刷新最多75829页刷新最多75829最后检查点75820 0挂起日志刷新,0挂起chkp写入90日志i/o完成,0.00日志i/o/秒

缓冲池和内存

已分配的大内存总数33554432已分配的字典内存30048缓冲池大小1003空闲缓冲区747数据库页256旧数据库页0已修改数据库页0脏页百分比(LRU &空闲页):0.000最大脏页百分比:75.000挂起读取0挂起写入:LRU 0,flush list 0,single page 0页面创建年轻0,非年轻0 0.00年轻/s,0.00非年轻/s页面读取169,创建180,写入301 0.00读取/s,0.00创建/s,0.00写入/s缓冲池命中率1000 / 1000,年轻创建率0 / 1000非0 / 1000页面预读0.00/s,无访问逐出0.00/s,随机预读0.00/s LRU len:256,unzip_LRU len:0 I/O sum[0]:cur[0],解压缩sum[0]:cur[0]

ROW操作

InnoDB内部0个查询,队列0个查询,InnoDB内部0个读取视图打开进程ID=21176,主线程ID=17500,状态:sleeping行数插入10、更新2、删除0、读取27 0.00插入/秒、0.00更新/秒、0.00删除/秒、0.00读取/秒系统行数插入0、更新0、删除0、读取0 0.00插入/秒、0.00更新/秒、0.00删除/秒、0.00读取/秒

INNODB MONITOR输出结束

如何解决这个错误?

kd3sttzy

kd3sttzy1#

你的FK在错误的table上。FK引用另一个表中的PK,因此您希望enrolments表中的FK引用student表

yqyhoc1h

yqyhoc1h2#

我有学生和招生之间的关系倒退。

ALTER TABLE enrollments
ADD CONSTRAINT fk_student_enrollment
FOREIGN KEY (student_id)
REFERENCES students (student_id);

相关问题