不允许从数据类型 varchar(max) 到 varbinary(max) 的隐式转换。使用 CONVERT 函数 运行 这个查询

Implicit conversion from data type varchar(max) to varbinary(max) is not allowed. Use the CONVERT function to run this query

我在开发中使用 MySQL,以 longblob 数据类型存储 base64 图像。

但是在我将数据库更改为 MS SQL 并将数据类型更改为 varbinary(max)

后尝试插入数据时出现以下错误

Implicit conversion from data type varchar(max) to varbinary(max) is not allowed. Use the CONVERT function to run this query

所以我放了一个 mutator 来解决这个问题,

public function setItemPictureAttribute($value)
{
    $this->attributes['item_picture'] = DB::raw('CONVERT(VARBINARY(MAX), "'. $value .'")');
}

但我在尝试存储 base64 图像时遇到以下错误;

The identifier that starts with '/9j/4QxnRXhpZgAATU0AKgAAAAgABwESAAMAAAABAAEAAAEaAAUAAAABAAAAYgEbAAUAAAABAAAAagEoAAMAAAABAAMAAAExAAIAAAAeAAAAcgEyAAIAAAAUAAAAkIdp' is too long. Maximum length is 128`

我错过了什么?

编辑:在我更改为 $this->attributes['item_picture'] = DB::raw("CONVERT(VARBINARY(MAX), '". $value ."')"); 之后,我以某种方式得到了这项工作;请注意,我在 DB::raw 中将双引号换成了单引号,反之亦然。也许有人可以解释为什么

我改成

后不知何故得到了这个工作
$this->attributes['item_picture'] = DB::raw("CONVERT(VARBINARY(MAX), '". $value ."')");; 

请注意,我在 DB::raw 中将双引号换成了单引号,反之亦然。也许有人可以解释为什么