From: Dave C. <dj...@ob...> - 2003-01-24 20:16:07
|
> I am getting Sybase.Error: ct_options when connecting to MSSQL or > Sybase. If I comment out the CS_OPT_CHAINXACTS line, it seems to > work for simple selects. tsql from freetds, today's version works > fine, so I suppose my freetds.conf file is right. What is the next > place to look? The CS_OPT_CHAINXACTS option is there to conform to the DB-API specification http://www.python.org/topics/database/DatabaseAPI-2.0.html Connection Objects commit() Commit any pending transaction to the database. Note that if the database supports an auto-commit feature, this must be initially off. An interface method may be provided to turn it back on. Database modules that do not support transactions should implement this method with void functionality. I probably should silently ignore problems setting this option... > I get the following when connecting to MSSQL2000: > > marcos@cynar:~/sybase-0.36pre3$ python -c "import > Sybase;Sybase._ctx.debug = 1;Sybase.connect('cazalla','sa','xxx')" > ct_con_alloc(ctx0, &conn) -> CS_SUCCEED, conn0 > ct_con_props(conn0, CS_SET, CS_USERNAME, "sa", CS_NULLTERM, NULL) -> > CS_SUCCEED > ct_con_props(conn0, CS_SET, CS_PASSWORD, "xxx", CS_NULLTERM, NULL) -> > CS_SUCCEED > servermsg_cb > servermsg_cb > ct_connect(conn0, "cazalla", CS_NULLTERM) -> CS_SUCCEED > ct_options(conn0, CS_SET, CS_OPT_CHAINXACTS, 1, CS_UNUSED, NULL) -> > CS_FAIL > ct_cancel(conn0, NULL, CS_CANCEL_ALL) -> CS_SUCCEED > Traceback (most recent call last): > File "<string>", line 1, in ? > File "Sybase.py", line 768, in connect > strip, auto_commit, delay_connect, locking) > File "Sybase.py", line 608, in __init__ > self.connect() > File "Sybase.py", line 633, in connect > self._raise_error(Error, 'ct_options') > File "Sybase.py", line 621, in _raise_error > raise exc(text) > Sybase.Error: ct_options > ct_con_props(conn0, CS_GET, CS_CON_STATUS, &value, CS_UNUSED, NULL) -> > CS_SUCCEED, CS_CONSTAT_CONNECTED > ct_close(conn0, CS_OPT_STATS_IO) -> CS_SUCCEED > ct_con_drop(conn0) -> CS_SUCCEED Can you try this patch (to 0.36pre3) for me (contains changes for Valerie R. Coffman as well)? - Dave --- Sybase.py 23 Jan 2003 10:11:02 -0000 1.56 +++ Sybase.py 24 Jan 2003 01:13:55 -0000 @@ -158,6 +158,8 @@ fmt.count = count if fmt.datatype == CS_VARBINARY_TYPE: fmt.datatype = CS_BINARY_TYPE + if fmt.maxlngth > 65536: + fmx.maxlength = 65536 status, buf = cmd.ct_bind(i + 1, fmt) if status != CS_SUCCEED: raise Error('ct_bind') @@ -629,8 +631,7 @@ self._raise_error(Error, 'ct_connect') self._is_connected = 1 status = conn.ct_options(CS_SET, CS_OPT_CHAINXACTS, not self.auto_commit) - if status != CS_SUCCEED: - self._raise_error(Error, 'ct_options') + self.auto_commit = (status != SUCCEED) finally: self._unlock() if self.database: -- http://www.object-craft.com.au |