首页 > 解决方案 > Laravel Seeder 类和数组上的第三项给出异常

问题描述

我正在播种 [skills] 表,但我在控制台中遇到错误,而且非常模糊。如果你检查,真的没什么用。只是个例外。

在此处输入图像描述

我试图播种的数据很自然,接受 的string列是BLOBimagesimage

MySQL 工作台:

在此处输入图像描述

奇怪的是,您可以看到一些种子数据经过(HTML 和 CSS)。这些图像文件存储在 storage 中/storage/app/images/skills/MY_IMAGE_FILE.png

我确保它不是PATH中的错字,所以文件一定有问题,但是这个javascript /storage/app/images/skills/javascript_logo.jpg,数组上的第三个是播种引发异常的地方。

这是我要播种的数组。如您所见,阵列上的第 3 项失败。

SkillsSeeder.php*

在此处输入图像描述

测试第三个文件是否损坏。我尝试直接在我的视图文件中运行该文件。

<img src="data:image/png;base64, {{ base64_encode(file_get_contents(storage_path('app/images/skills/javascript_logo.jpg'))) }}" />

但它在浏览器上正确显示。所以它必须是格式。我试图将其更改为.png. 仍然出现播种错误,但如果直接显示在视图上,它可以工作。

在这一点上,我确信:

  1. 图片文件没问题。
  2. 存储路径没问题。
  3. 文件格式不是问题。

我的猜测:

  1. 播种机出了点问题,但是怎么来的,我有另一个表在数据类型和播种器类方面具有相同的列(varchar 和 BLOB),它使用完全相同的方法,但不会失败。那和这个播种机几乎是一样的。

很抱歉打包了大量图片,但最后一张图片只是播种机。

SkillsSeeder.php在此处输入图像描述

我真的很困惑为什么三号种子会失败。就第3个。

标签: phplaravellaravel-seeding

解决方案


BLOB 大小限制为 65kB,仅应使用 MEDIUMBLOB。现在,Laravel Schema builder 不支持 MEDIUMBLOB。你检查这个如何添加 MEDIUMBLOB

https://www.256kilobytes.com/content/show/500/laravel-how-to-create-a-database-field-of-the-types-mediumblob-longblob-and-other-data-types-not-由模式外观显式支持


推荐阅读