0

我搜索了 Laravel 文档和堆栈以查看是否提到了这一点,但没有发现其他提及。

有没有办法配置 Laravel 应用程序来禁止显示附件等数据库警告消息?

此特定错误表明 spatie/laravel-activitylog 应用程序正在记录被截断的更改。有问题的“属性”字段的类型为:TEXT。

错误信息

在初始事务(编辑本身)周围放置一个 try/catch 不会捕获错误消息。

想法?

如果任何特定的代码片段有帮助,请告诉我,我会更新这篇文章。

4

4 回答 4

0

不幸的是我不熟悉这个包。然而,在他们的Github上的快速扫描告诉我,它看起来是一个可以在配置中设置的模型,用于将这些数据存储到数据库中。

一个建议是使用Eloquent 事件saving特别是因为这将在creating和时触发updating

在此事件的回调函数中,您可以截断模型的特定属性。properties在这种情况下,如果我没记错的话,那将是属性。

看起来您正在尝试存储一些 base64 字符串,并且猜测是这会导致问题。也许properties您可以src="somereallylongbase64"对.src="...base64..."properties

于 2019-03-11T22:07:51.380 回答
0

那不是警告吗?这是一个例外,因为您的插入语句试图在“属性”列中插入大量数据。

您可能不想抑制这种类型的消息(并且可能无法抑制潜在的错误),您需要通过使列适合更多数据或使用其他一些保存机制来修复它(如果您有很多数据)保存。

于 2019-03-11T22:10:26.070 回答
0

spatie/laravel-activitylog使用您的模型$fillable属性来了解要记录哪些属性并将它们记录在表的properties列下activity_log

检测 MySQL 中将被截断的属性并将其包含到$logAttributesToIgnore模型中的属性中:

public static $logAttributesToIgnore = [];

如果您坚持要记录该属性,您应该创建一个迁移并将properties列从TEXTtoMEDIUMTEXT或更大。

于 2021-05-02T18:53:49.353 回答
0

嘿,很抱歉聚会迟到了。要抑制截断警告,只需将其放入 CAST 中。

例子:

-- With decimal(4, 1) (too many decimal places throws a warning but doesn't throw an
-- exception unlike having too high a number would):
INSERT INTO sysmon.temperatures VALUE (NOW(), CAST(46594/1000 AS DECIMAL(4,1)), 36.5);
-- Mysql: Process run is green!

-- With VARCHAR(400) (when too many characters throws a warning before truncating):
INSERT INTO website.blog_comments VALUE (NOW(), CAST('some really long string' AS VARCHAR(400)));
-- Mysql: You're the boss!

TEXT 的工作方式与上面的 VARCHAR 示例类似。

于 2020-12-30T23:22:34.437 回答