Eswlnk Blog Eswlnk Blog
  • 资源
    • 精彩视频
    • 破解专区
      • WHMCS
      • WordPress主题
      • WordPress插件
    • 其他分享
    • 极惠VPS
    • PDF资源
  • 关于我
    • 论文阅读
    • 关于本站
    • 通知
    • 左邻右舍
    • 玩物志趣
    • 日志
    • 专题
  • 热议话题
    • 游戏资讯
  • 红黑
    • 渗透分析
    • 攻防对抗
    • 代码发布
  • 自主研发
    • 知识库
    • 插件
      • ToolBox
      • HotSpot AI 热点创作
    • 区块
    • 快乐屋
    • 卡密
  • 乱步
    • 文章榜单
    • 热门标签
  • 问答中心反馈
  • 注册
  • 登录
首页 › 日志 › 「日志记录」毕设开发之数据库外键问题

「日志记录」毕设开发之数据库外键问题

Eswlnk的头像
Eswlnk
2024-02-12 16:57:53
「日志记录」毕设开发之数据库外键问题-Eswlnk Blog
智能摘要 AI
该文章描述了在MySQL 5.7环境中使用`ALTER TABLE`语句添加外键时出现问题的情况。最初以为添加了外键,但实际上只增加了索引。经检查发现,表的存储引擎为MyISAM而非InnoDB,而MyISAM不支持外键约束。通过使用`ALTER TABLE ... ENGINE=InnoDB;`语句将表引擎更改为InnoDB,解决了问题。此外,还提供了将默认存储引擎设置为InnoDB的方法,但不推荐用于单个表。文章最后详细比较了MyISAM和InnoDB两种存储引擎的特点,强调了InnoDB更适合需要事务和外键支持的应用场景。

问题详情

ALTER TABLE `seat` ADD FOREIGN KEY (`lab_id`) REFERENCES `lab` (`lab_id`);

环境:Mysql 5.7

代码没有任何问题,在执行查询后,通过「Navicat Premium」可视化查询后该代码并不能为相对应的字段添加外键,而是增加了索引。

经过检查,表字段以及相对应的表都没有任何问题。

解决办法

通过以下命令查询目标表的状态信息:

SHOW TABLE STATUS LIKE 'test';
「日志记录」毕设开发之数据库外键问题-Eswlnk Blog

通过询问AI后得到以下答案:

如果你想要在 MySQL 中使用外键约束,表的存储引擎必须是 InnoDB。InnoDB 是 MySQL 中支持事务和外键约束的存储引擎,而 MyISAM 不支持外键约束。

因此,在添加外键约束之前,你需要确保你的表使用的是 InnoDB 存储引擎。如果表使用的是其他存储引擎,如 MyISAM,那么你需要先将表的存储引擎更改为 InnoDB,然后再添加外键约束。

来自《AI》

解决办法一(推荐)

在SQL脚本中,在创建外键的代码之前插入以下:

ALTER TABLE `lab` ENGINE=InnoDB;

修改表的引擎为InnoDB,即可完美解决问题!

解决办法二

数据库默认表引擎存储在mysql.ini文件中。 打开这个文件,对default-storage-engine参数进行修改,改为InnoDB。

default-storage-engine=InnoDB

解决办法三

注意,这个方法会影响当前数据库服务中所有的ISAM引擎的表,所以坚决不推荐,但是知道有这么个东西而已

  1. 查询所有的表引擎SHOW PLUGINS;
  2. 删掉不需要的表引擎UNINSTALL PLUGIN myisam;

MyISAM 表引擎与InnoDB 表引擎区别

MyISAM 表引擎

  1. 非事务性引擎:MyISAM 不支持事务,这意味着它不支持 ACID(原子性、一致性、隔离性、持久性)属性,因此不适合要求数据完整性和事务控制的应用。
  2. 表级锁定:MyISAM 使用表级锁定,这意味着在对表进行读写操作时,其他会话可能无法同时访问相同的表,这会导致并发性能问题。
  3. 速度快:在某些读密集型应用中,MyISAM 可能比 InnoDB 更快,因为它不需要支持事务和回滚操作,但在写入频繁的情况下,性能可能下降。
  4. 支持全文索引:MyISAM 支持全文索引,适合全文搜索等应用。
  5. 表碎片问题:MyISAM 表在删除或更新数据后会产生碎片,需要定期进行优化或维护操作。

InnoDB 表引擎

  1. 事务性引擎:InnoDB 是事务性表引擎,支持 ACID 特性,适用于需要数据完整性和事务控制的应用,如银行、电子商务等。
  2. 行级锁定:InnoDB 使用行级锁定,允许多个会话同时访问同一表的不同行,提高了并发性能。
  3. 支持外键:InnoDB 支持外键约束,可以确保数据的一致性和完整性。
  4. 崩溃恢复:InnoDB 提供崩溃恢复功能,可以在数据库崩溃后自动修复损坏的数据。
  5. 自动扩展:InnoDB 表支持自动扩展,可以更灵活地管理磁盘空间。
  6. 更好的并发性能:对于高并发写入和读取操作的应用,InnoDB 通常具有更好的性能。
本站默认网盘访问密码:1166
本站默认网盘访问密码:1166
声明:本站原创文章文字版权归本站所有,转载务必注明作者和出处;本站转载文章仅仅代表原作者观点,不代表本站立场,图文版权归原作者所有。如有侵权,请联系我们删除。
SQL开发日志数据库日志毕设
1
0
Eswlnk的头像
Eswlnk
一个有点倒霉的研究牲站长
赞赏
「日志记录」关于宝塔Nginx防火墙代码记录
上一篇
「日志记录」家庭监控方案:我的智能安防布局
下一篇

评论 (0)

请登录以参与评论
现在登录
    发表评论

猜你喜欢

  • 「日志」IG无缘S15总决赛
  • 来自谷歌27岁的生日涂鸦
  • 插件分享:新增自助购买卡密功能
  • 事件记录:国内网络故障情况
  • 科研记录:ecCodes处理grib文件问题
Eswlnk的头像

Eswlnk

一个有点倒霉的研究牲站长
1108
文章
319
评论
679
获赞

随便看看

「开发日志」踩到 Go 的 json 解析坑了,如何才能严格解析 json?
2023-09-21 13:26:36
这几天也太无聊了
2023-01-19 18:28:28
「日志记录」毕设开发之数据库外键问题
2024-02-12 16:57:53

文章目录

专题展示

WordPress53

工程实践37

热门标签

360 AI API CDN java linux Nginx PDF PHP python SEO Windows WordPress 云服务器 云服务器知识 代码 免费 安全 安卓 工具 开发日志 微信 微软 手机 插件 攻防 攻防对抗 教程 日志 渗透分析 源码 漏洞 电脑 破解 系统 编程 网站优化 网络 网络安全 脚本 苹果 谷歌 软件 运维 逆向
  • 首页
  • 知识库
  • 地图
Copyright © 2023-2025 Eswlnk Blog. Designed by XiaoWu.
本站CDN由 壹盾安全 提供高防CDN安全防护服务
蜀ICP备20002650号-10
页面生成用时 0.424 秒   |  SQL查询 23 次
本站勉强运行:
友情链接: Eswlnk Blog 网站渗透 倦意博客 特资啦!个人资源分享站 祭夜博客 iBAAO壹宝头条
  • WordPress142
  • 网络安全64
  • 漏洞52
  • 软件52
  • 安全48
现在登录
  • 资源
    • 精彩视频
    • 破解专区
      • WHMCS
      • WordPress主题
      • WordPress插件
    • 其他分享
    • 极惠VPS
    • PDF资源
  • 关于我
    • 论文阅读
    • 关于本站
    • 通知
    • 左邻右舍
    • 玩物志趣
    • 日志
    • 专题
  • 热议话题
    • 游戏资讯
  • 红黑
    • 渗透分析
    • 攻防对抗
    • 代码发布
  • 自主研发
    • 知识库
    • 插件
      • ToolBox
      • HotSpot AI 热点创作
    • 区块
    • 快乐屋
    • 卡密
  • 乱步
    • 文章榜单
    • 热门标签
  • 问答中心反馈