0

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

但是在我将数据库更改为 MS SQL 和数据类型后尝试插入数据时出现以下错误varbinary(max)

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

所以我放了一个变异器来解决这个问题,如下所示,

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

但是在尝试存储base64图像时出现以下错误;

以 '/9j/4QxnRXhpZgAATU0AKgAAAAgABwESAAMAAAAAAAAAAAAEaAAUAAAABAAAAYgEbAAUAAAABAAAAagEoAAMAAAAAAAAAAExAAIAAAAeAAAAcgEyAAIAAAAUAAAAkIdp' 开头的标识符过长。最大长度为 128`

我错过了什么?

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

4

1 回答 1

0

我改成之后不知何故得到了这项工作

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

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

于 2018-01-17T09:46:10.317 回答