繁体   English   中英

不允许从数据类型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)后尝试插入数据时,出现以下错误

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

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

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

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

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

我错过了什么?

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

我以某种方式获得这份工作后

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM