大文本字符串取出丢失内容
今天发现一个非常奇怪的问题,我保存一个很大的文本进数据库,然后取出来的时候发现少了不少内容。测试之后发现是Laravel的问题,用PDO查询是不会丢失的。
数据表结构如下:
CREATE TABLE `articles` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`content` longtext NOT NULL COMMENT '内容',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=29 DEFAULT CHARSET=utf8mb4
测试代码如下:
$article = new \App\Models\Article();
$article->title = 'test';
$article->content = str_repeat('a', 2000000);
$article->save();
$id = $article->id;
$data1 = \App\Models\Article::find($id);
var_dump(strlen($data1->content));
$dbh = new PDO('mysql:host=localhost;dbname='.env('DB_DATABASE'), env('DB_USERNAME'), env('DB_PASSWORD'));
$sth = $dbh->prepare('select * from articles where id = :id limit 1');
$sth->bindValue(':id', $id);
$sth->execute();
$data2 = $sth->fetch(PDO::FETCH_OBJ);
var_dump(strlen($data2->content));
结果如下:
int 1048576
int 2000000
PS:小于1048576
的字符串是正常的,大于这个数字的都只返回1048576
的长度
请问有知道这是什么问题的吗??这个神奇的数字是什么?
推荐文章: