* Dirk Eddelbuettel <[EMAIL PROTECTED]> [060302 13:30]: > > On 1 March 2006 at 22:30, Dirk Eddelbuettel wrote: > | Did you try setting believeNRows=FALSE in odbcConnect() ? From > | help(odbcConnect, package=RODBC): > [...] > | odbcConnect(dsn, uid = "", pwd = "", case = "nochange", > | believeNRows = TRUE) > | [...] > | believeNRows: logical. Is the number of rows returned by the ODBC > | connection believable? Not true for Oracle and Sybase, > | apparently. > | > | This has been the fix on other systems, it could simply that RODBC gets > | handed a bad value. Apparently common with some backends, as I recall I had > | to use that too with some Sybase-on-Solaris versions a while back. > > I really meant FALSE, not TRUE: > > On 2 March 2006 at 10:00, Johannes Ranke wrote: > | Package: r-cran-rodbc > | Version: 1.1.5-1 > | Followup-For: Bug #354723 > [...] > | [EMAIL PROTECTED]:~$ cat odbctest.R > | library(RODBC) > | channel <- odbcConnect("cytotox",uid="cytotox", > | pwd="cytotox", believeNRows=TRUE) > ^^^^^^^^^^^^^^^^^^ > | query <- "SELECT plate FROM plates LIMIT 1,10" > | tables <- sqlQuery(channel,query) > | tables > | odbcGetErrMsg(channel) > | odbcClose(channel) > > So could you please try with FALSE?
Hi again, as I said something in the mess above, I DID try with FALSE, here it is > library(RODBC) > channel <- odbcConnect("cytotox",uid="cytotox", + pwd="cytotox", believeNRows=FALSE) > query <- "SELECT plate FROM plates LIMIT 1,10" > tables <- sqlQuery(channel,query) > tables character(0) > odbcGetErrMsg(channel) character(0) > odbcClose(channel) > Otherwise, I agree with a comment you made in the another mail that it is > probably the myodbc driver that causes it. RODBC only passes the command on. I could fix the problem of the segfault of php5-odbc by recompiling libmyodbc (I will add this story to #353997, which is the same bug) But on this, I am still working. The following strace comparison between working (i386 box) and failing (amd64 box) might be useful: i386 ... write(1, "> query <- \"SELECT plate FROM pl"..., 49> query <- "SELECT plate FROM plates LIMIT 1,10" ) = 49 write(1, "> tables <- sqlQuery(channel,que"..., 36> tables <- sqlQuery(channel,query) ) = 36 semop(98306, 0xbfd50c90, 2) = 0 semop(98306, 0xbfd50c9e, 1) = 0 time(NULL) = 1141300906 fcntl64(3, F_SETFL, O_RDWR|O_NONBLOCK) = 0 read(3, 0x86086c0, 8192) = -1 EAGAIN (Resource temporarily unavailable) fcntl64(3, F_SETFL, O_RDWR) = 0 write(3, "$\0\0\0\3SELECT plate FROM plates LI"..., 40) = 40 read(3, "\1\0\0\1", 4) = 4 read(3, "\1", 1) = 1 read(3, "\27\0\0\2", 4) = 4 read(3, "\6plates\5plate\3\v\0\0\1\3\3\0\0\0", 23) = 23 read(3, "\1\0\0\3", 4) = 4 read(3, "\376", 1) = 1 read(3, "\2\0\0\4", 4) = 4 read(3, "\0014", 2) = 2 read(3, "\2\0\0\5", 4) = 4 read(3, "\0015", 2) = 2 read(3, "\2\0\0\6", 4) = 4 read(3, "\0016", 2) = 2 read(3, "\2\0\0\7", 4) = 4 read(3, "\0018", 2) = 2 ... amd64: ... write(1, "> query <- \"SELECT plate FROM pl"..., 49> query <- "SELECT plate FROM plates LIMIT 1,10" ) = 49 write(1, "> tables <- sqlQuery(channel,que"..., 36> tables <- sqlQuery(channel,query) ) = 36 semop(32769, 0x16d1d08, 140737486958608) = 0 semop(32769, 0x16d1d08, 140737486958608) = 0 fcntl(3, F_SETFL, O_RDWR|O_NONBLOCK) = 0 read(3, 0xb508b0, 8192) = -1 EAGAIN (Resource temporarily unavailable) fcntl(3, F_SETFL, O_RDWR) = 0 write(3, "$\0\0\0\3SELECT plate FROM plates LI"..., 40) = 40 read(3, "\1\0\0\1\0013\0\0\2\3def\7cytotox\6plates\6pla"..., 16384) = 144 write(1, "> tables\n", 9> tables ) = 9 write(1, "character(0)\n", 13character(0) ) = 13 ... It tells me that mysql returns lots of data, which is not correctly read by whatever reads it. It can't really be myODBC, because I can retrieve the data with isql, as I demonstrated above. -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]