dan*_*317 7 php sql-server varchar
我正在使用几个内存表来缓存我网站的数据.这是我的mac上的本地web主机和linux上的dev服务器,使用php 5.5上的mssql php库
简化表格如下:
CacheID INT NOT NULL
CacheData VARCHAR(MAX)
Run Code Online (Sandbox Code Playgroud)
我偶尔会插入几个大值.10,000多个字符.插件工作正常.一个简单的查询告诉我所有数据都在字段中:
SELECT
CacheID,
LEN(CacheData)
FROM Caches
Run Code Online (Sandbox Code Playgroud)
但是,当我实际选择数据时,该cache列总是被截断为8192个字符,从而导致出现问题.简单选择:
SELECT
CacheData
FROM Caches
WHERE CacheID = 10
Run Code Online (Sandbox Code Playgroud)
我检查了varchar(max)字符限制.它远远超过8192.2^32 - 1
为什么数据被截断?
另一种形式的问题.我实际上遇到了这个agian而忘记了这个解决方案.当我忘记根本原因时,请记住我.这是我搜索认为SQL Server是罪魁祸首.
什么是SQL Servers Varchar(MAX)最大长度? - 如果你的值被截断它可能是由php非sql server引起的.如果您只想知道最大值是什么,这里回答的问题是:varchar(max)变量的最大大小
回答我自己的问题.只是把它发布在这里是因为我花了一个多小时来解决这个问题,所以对它有一个直截了当的答案会很好.我已经看到类似的堆栈溢出问题,但它们非常特定于一个用例或者措辞不好,搜索结果找不到它们
用于php的mssql模块在php.ini文件中有几个默认设置.其中一个设置是mssql.textlimit和mssql.textsize.这些设置会将任何基于文本的字段(varchar,text,nvarchar)截断为它们设置的大小.
我已经看到截断在8192和4096上的帖子.所以我假设其中任何一个都可以是默认的.我把我的上升到了65535(2 ^ 16 - 1).
作为旁注,我还专门针对SQL Server Management Studio中的查询结果看到了类似的问题.程序中有几个限制可以显示或导出多少个字符.此外,程序中还有一些设置用于编辑显示/导出的字符数.在这个问题上更多的信息在这里.
| 归档时间: |
|
| 查看次数: |
1363 次 |
| 最近记录: |