我在“text”类型的表中有一个字段,它通常包含“base64”中的图片;当图像很大时,它们会包含大约200,000个字符。基础的“文本”允许我存储多达400万个字符。但是Doctrine在64512中删除了我的字符串。
版本:
Symfony 2.5.3上的学说2.4.4
数据库:Microsoft SQL Server 2000 - 8.00.2039(英特尔X86) 2005年5月3日23:18:38 版权所有(c)1988-2003 Microsoft Corporation Windows NT 5.2(Build 3790:Service Pack 2)上的企业版
该领域宣言。
/**
* @var text
*
* @ORM\Column(name="mensaje", type="text")
*/
private $mensaje;
Getter方法:
public function get($value){
return mb_detect_encoding($value, mb_detect_order(), true) === 'UTF-8' ?
$value : mb_convert_encoding($value, 'UTF-8');
}
/**
* Get mensaje
*
* @return text
*/
public function getMensaje() {
return $this->get($this->mensaje);
}
我试过了:
TNKS。
答案 0 :(得分:1)
您可以使用longtext来存储长度最大为4294967292的文本
TINYTEXT : 2 ^ 8 - 1 = 255
TEXT : 2 ^ 16 - 2 = 65534
MEDIUMTEXT : 2 ^ 24 - 3 = 16777213
LONGTEXT : 2 ^ 32 - 4 = 4294967292
为此,您需要添加columnDefinition =" longtext"到你的领域
答案 1 :(得分:0)
在我的项目中,我们使用base64图像(虽然不像你的那么大),我们使用了一个主义十进制类型。 @ORM \ Column(name =“image”,type =“decimal”,precision = 10,scale = 4,nullable = true)
我们使用sql server 2012但使用varchar(MAX)数据类型。
当图像上传时,我们使用base64_encode($ imageFile)并坚持......
public function preUpload()
{
if(null === $this->imageFile){
return;
}
$data = file_get_contents($this->imagefile);
$base64 = base64_encode($data);
$this->image = $base64;
}
public function getImage() {
return $this->get($this->Image);
}
然后getImage返回我们用来显示的base64编码字符串。我的字符串长度为129400。没有从DB转换。
答案 2 :(得分:0)
PHP用几个字符截断我的所有字符串。解决方案是在php.ini
中mssql.textlimit = 2147483647
; Valid range 0 - 2147483647. Default = 4096.
mssql.textsize = 2147483647
默认设置为4096,存在问题。 谢谢你的时间!!!