Member
Статус: Не в сети Регистрация: 10.12.2003 Откуда: Харьков
Как уговорить FreeDTS отдавать в датасете в php больше чем по 255 символов в ячейку датасета?
Бо как понимаете протащить varchar 8000 сабстрингами - это высшее посвящение йогов FreeBSD 5.2, Apache/1.3.28, PHP/4.3.6
Member
Статус: Не в сети Регистрация: 10.12.2003 Откуда: Харьков
Для любителей позадовать много вопросов не зная с каой стороны зайти, сразу скажу, что установлено на соединение
Код:
SET TEXTSIZE 8000
В QueryAnalyzer отдаёт столько, сколько надо, из чего посмею сделать вывод о том, что это именно проблема DTS
Добавлено спустя 2 минуты, 31 секунду: Да не, под виндой у меня тоже проблем нет. У тебя же оригинальный под виндой клиент майкрософта стоит, а я фришную бяку бзаю, к томуже совместимую с SyBase
Advanced member
Статус: Не в сети Регистрация: 09.06.2003 Откуда: USSR
Vinni Я не вопросы задаю, а пытаюсь выснить суть , так как я на php пишу очень давно и также очень давно использую MS-SQL , мне это дело интересно.
Цитата:
Да не, под виндой у меня тоже проблем нет. У тебя же оригинальный под виндой клиент майкрософта стоит, а я фришную бяку бзаю,
А как под FreeBsd идет обращение с MSSQL, через какие билиотеки? Фришка у меня вроде тоже стоит, сейчас не помню. Но если клиента нет, то видимо модуль для php , как раз и делает все сам. Кстати а под Windows он сам все не делает? Сейчас попробую через фришку
Добавлено спустя 14 минут, 43 секунды: Текс, вот те на. Тест под Windows.
Цитата:
<? $ms=mssql_connect("localhost","sa","_____"); mssql_select_db("just"); $res=mssql_query("select * from mytable"); while ($row=mssql_fetch_array($res)) { echo strlen($row[0])."<br>".$row[0]."<hr>"; } mssql_free_result($res); mssql_close($ms); ?>
Таблица mytable имеет одно поле размером varchar(1000);
результат возвращает только 255
Добавлено спустя 2 минуты, 34 секунды: Забыл добавить это было под Windows. А вот потом добавил поле типа text, с ним работает без проблем. Возращает имеено такого размера строку как надо.
Добавлено спустя 29 минут, 14 секунд: кхм, а как скомпилить php под фришку с поодержкой MS-SQL??? Тот модуль что с ним идет пашет только под Windows. Как я ни пытался перекомпилить php
./configure --with-mssql
результата никакого
Добавлено спустя 1 минуту, 40 секунд: тьфу вот я торможу после работы, тут же про FreeDTS речь идет!
Добавлено спустя 44 минуты, 5 секунд: Ну вот, скачал FreeTDS , скомпилил и протестил.
Если поле varchar то максимально этот гад дает только 255, а вот при применении типа поля как text FreeTDS прекрасно возращается всю длину строки!
Код:
rayunix# tsql -H 192.168.239.1 -p 1433 -U sa locale is "C" locale charset is "US-ASCII" Password: 1> use just 2> go 1> select * from mytable 2> go var1 var2 1234567890123456789012345678 NULL
NULL 123456789012345678....... 300 bytes line 1
NULL 1234567890123456789...... 300 bytes line 2
Вот, первая переменнач varchar(1000) но FreeDTS вернул только 255, var2 тип text, и вернул все что было там 300 букв и в конце надпись 300 bytes line 1 Я укоротил вывод, чтобы тут лишнее не выводить.
И так выход один наверное , использовать только text если надо передавать большие куски текста.
Member
Статус: Не в сети Регистрация: 10.12.2003 Откуда: Харьков
Спасибо Ray Adams.
Не обижайся, я просто хотел "умников отсечь", которые любят на любой вопрос уточнить какого цвета у меня коврик от мышки.
Вот смори какая зависимость получается. Допустим поле в varbinary(8000). Кладу я туда обычно гдето в чаровом эквиваленте 1000, т.е. в binary в 2 раза больше ~2000
Так вот, если выводить это поле как есть , т.е. в varbinary - то в php получаю 510 для binary, а для его-же , тока через CAST (varbinary_field as varchar(300)) - соответственно 255.
Но идейку с текстом ты ничё родил!
Конечно поле TEXT не решает самой проблемы, но это способ. Я попробовал - получилось - так:
CAST(CAST(varbinary_field as varchar(8000)) as text)
Но однако это трудно не назвать через сраку, извиняюсь.
А хранить я по другому не всегда могу, ибо зачастую а тока читаю, например сорцы ментаданных (триггера, хранимые процедуры и другая дрянь) из системных каталогов. Спасибо ещё раз!
Member
Статус: Не в сети Регистрация: 10.12.2003 Откуда: Харьков
Отож. Хорошая штука, но слишком много вещей в нём неочевидны. Сколько раз я кричал после пол-дня головоломания:
- О б...! Кто бы мог догадаться!
Я уже плачу по mysql
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения