微信扫码登录

微信扫码登录

邮箱恶意注册过多,目前只支持微信模式
正在播放:代码之道 — 项目的前期准备工作
标 题 时 间
代码之道 — 从工程项目全局的角度考虑整个项目的组织和管理 04:47
代码之道 — 项目的前期准备工作 11:30
一个好的后台系统可以极大的简化项目的开发和项目维护 15:25
代码之道 — 兵马未动,测试数据先行,重新生成测试数据 07:44
代码之道 — 快速构建用于演示的博客前台 15:41
代码之道 — 解决数据库查询的 N+1 查询浪费问题 06:19
代码之道 — 逐步构建完善的数据缓存系统 09:50
缓存之道 — 最简单粗暴的缓存机制如何实现 18:34
缓存之道 — Stay hungry ,Stay foolish,谦逊是美德 08:01
缓存之道 — 将用户缓存进行更灵活的单独管理 08:37
缓存之道 — 将评论缓存进行整体粗粒度切割 07:28
缓存之道 — 中心化的管理方式会让维护和开发变得更简单 02:18
缓存之道 — 更新单个评论时如何对缓存进行高效处理 05:39
缓存之道 — 发布新评论、删除评论时如何高效对缓存数据处理 05:29
缓存之道 — 理解读写分离的切勿僵化,缓存系统继续出发 04:18
缓存之道 — 博客总览页面分页缓存机制最简单粗暴的实现方式 07:59
缓存之道 — 分页数据缓存机制大改造 05:27
缓存之道 — 创建自己的分页器 06:08
缓存之道 — 使用 Bootstrap4 完成分页器的美化和高亮功能 06:23
缓存之道 — 创建新的博客时如何对缓存数据进行处理 07:29
缓存之道 — 更新和删除博客时如何对缓存进行操作 05:49
缓存之道 — 实现所有Model类都可以使用的抽象缓存接口 13:26
缓存之道 — 实现适用于所有Model类的抽象缓存的分页器 07:22
ghdlk 2019.06.26 15:50

老哥,把视频过了一遍,今天实际上手操作的时候出现了一个问题,在网上也没找到答案,异常如下:

PDOException::("SQLSTATE[HY000]: General error: 1824 Failed to open the referenced table 'posts'")

导致了 posts 数据表不能正常创建,可能是因为抛出了异常,所以都没有执行,因为单独指定 posts 的 migrations 文件确可以正常创建。

望老哥答疑呀!

Codinget 2019.06.26 16:13

这个我也是第一次见,一起涨涨姿势看能不能解决它,你是怎么创建表格的时候出现的这个问题啊

Codinget 2019.06.26 16:19

我感觉不太对,是不是你评论的表格和posts表格顺序不对了,创建comments表格的时候需要引用posts表格中的字段,但是你两张表格的创建顺序反了的话,就会出现这类问题,它先去创建comments表了

ghdlk 2019.06.26 17:16

我有过这个怀疑,但是我们是将 migrations 文件一起编辑好之后去执行 php artisan migrate 去让框架自动去生成呀,这样的话顺序问题又怎么说呢?难道是要从最开始的生成 model 开始就要按照顺序来么?我记不清是先生成的哪个了,现在我直接使用了 voyager 的测试数据,目前还算顺利,晚上的时候我测试下是否和创建 model 顺序有关。

Codinget 2019.06.26 17:22

一起执行php artisan migrate 的时候,表格按照migration文件中的时间(migration文件名中包含的时间)先后依次创建,如果comments migration的时间早于posts migration的时间,那就先会去创建comments表格,这个时间特别重要,很多人都在这里翻了船也不知道为啥,这个跟生成model的先后没啥关系,跟migration文件生成的顺序有重大关系

ghdlk 2019.06.26 18:43

刚才简单测试了一下,使用 php artisan make:model *** -a 创建 model 时,先创建的要比后创建的时间要大(文件名上的时间),后面再去生成数据表时就会出现上面说到的问题,而如果先创建 Post ,后创建 Comment ,生成时则没有问题。简单测试了一下,不知道是否正确,老哥有空了可以试一下,然后出来答疑(权威一些)。

Codinget 2019.06.26 19:11

这就是我之前回复说的问题,用-a参数就会顺便生成migration文件,所以必须保证他们的顺序要正确,不然肯定遇到问题,问题不是出在创建model上,主要就是因为使用 -a 或者-m参数生成迁移文件的时候没注意数据之间的引用关系。

标 题