Я в настоящее время пытаюсь вытянуть некоторые данные из представления базы данных SQL Server, что у нас есть ограниченный доступ к от нашего веб-сервера Linux.
Мы не должны редактировать данные, просто отображают его на веб-странице.
Все это выглядит хорошо, пока мы не пытаемся произвести и только получить первые 255 символов текстового поля.
Делает любой знает, является ли это проблемой с использованием FreeTDS через PHP:: PDO или если это должно хорошо работать? Я видел других людей, там имеющих подобные проблемы, но там, кажется, не много ответов.
Я использую это в качестве строки подключения для дб SQL MS:
$dbConn = new PDO("odbc:Driver=FreeTDS;DSN=OURDSN;UID=WWWUser;PWD=ourpassword");
Согласно Руководству пользователя FreeTDS, проблема, похоже, в том, что FreeTDS может обрабатывать varchar
только до 255 символов при общении с SQL Server "из-за ограничений, присущих определению протокола". Все, что больше этого, должно иметь тип данных text
.
Вы можете решить эту проблему, либо изменив схему соответствующим образом, либо преобразовав тип данных во время запроса, например, так:
SELECT CAST(mycol as TEXT) FROM mytable
Вы можете увеличить размер текстовых полей в файле /etc/odbc.ini, используемом FreeTDS.
[name_of_connection]
TextSize = 2097152
Вы также можете попробовать использовать процедуры PHP odbc низкого уровня, чтобы убедиться, что вы можете получить этот уровень извлечения данных, а затем вернуться к использованию PDO.