2010-05-07 5 views
1

Lorsque j'ajouteFreeTDS manque de mémoire de DBD :: Sybase

client charset = UTF-8 

à mon dossier freetds.conf, mon DBD :: programme Sybase émet:

Out of memory! 

et se termine. Cela se produit lorsque j'appelle execute() sur une instruction de requête SQL qui renvoie des champs ntext. Je peux très bien renvoyer des données numériques, datetimes et nvarchars, mais chaque fois que l'un des champs de sortie est ntext, j'obtiens cette erreur. Toutes ces requêtes fonctionnent parfaitement sans le réglage UTF-8, mais j'ai besoin de gérer certains caractères qui lancent des avertissements sous le jeu de caractères par défaut. (Voir related question.)

Le message d'erreur n'est pas formaté de la même manière que les autres messages d'erreur DBD :: Sybase semblent être formatés. J'obtiens un message qu'un rollback() est publié, cependant. (Mon faux drapeau AutoCommit est respecté.) Je pense avoir lu quelque part que FreeTDS utilise le programme iconv pour convertir des jeux de caractères; Est-il possible que ce message soit émis depuis iconv?

Si j'exécute la même requête avec les mêmes paramètres freetds.conf dans tsql (shell SQL en ligne de commande de FreeTDS), l'erreur ne se produit pas.

Je me connecte à SQL Server.

Que dois-je faire pour que ces requêtes aboutissent?

Répondre

3

J'ai vu cela dans le fichier .conf - voir si elle aide:

# Command and connection timeouts 
; timeout = 10 
; connect timeout = 10 
# If you get out of memory errors, it may mean that your client 
# is trying to allocate a huge buffer for a TEXT field. 
# (Microsoft servers sometimes pretend TEXT columns are 
# 4 GB wide!) If you have this problem, try setting 
# 'text size' to a more reasonable limit 
text size = 64512 
+0

Cela l'a fixé; Je vous remercie! – skiphoppy

Questions connexes