Brian,
Substitute the following after the Browse:
cStr=Replicate("Hello12345",300)
lcExec=[Insert Into mysqlbug Values (20, "Hello", "There", ?cStr)]
If loSPT.Execute(lcExec) > 0
*
lcExec=[select * from mysqlbug]
If loSPT.Execute(lcExec) > 0
*
Browse
*
Endif
*
endif
you get a memo field returned as the last field in the table which is
correct. MySQL will pad out the field to whatever length is appropriate.
If you substitute the cStr for the other fields then exactly the same will
happen. The driver/VFP will return back whatever it feels is appropriate -
text or memo.
Dave Crozier
Dave Crozier
-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf
Of Brian Erickson
Sent: 10 August 2007 14:39
To: [email protected]
Subject: RE: Help confirm a MySQL ODBC bug
Same thing happed to me. The longtext cam back as c(255). I am running a
mysql 5.0.32 on Debian. My odbc driver version number is: <drum roll>
3.51.14.00. I hope that helps.
Brian Erickson
mailto:[EMAIL PROTECTED]
-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On
Behalf Of Steve Ellenoff
Sent: Thursday, August 09, 2007 7:28 PM
To: [EMAIL PROTECTED]
Subject: Help confirm a MySQL ODBC bug
Can some of you who have access to MySQL run the following code
(below) and post back your results, along with your version of the
ODBC driver (including sub revision #) & MySQL Engine.
This program should demonstrate a bug I've been seeing. I'm looking
to collect more data on this problem so I've put together this test
program to make a more scientific examination of the problem, since
other people here have reported not having the issue.
Please remember to change the parameters at the top of prg to match
your MySQL installation.
Thanks for your help in advance.
Steve
****************************************************************************
****************************************************************************
****************************
** MySQL ODBC Bug with VFP?
**
** Run this program once you've changed the setup parameters below
appropriately. The proper results should show that
** all 3 text fields t,mt,lt of type text, mediumtext, and longtext
respectively are reported by VFP as MEMO fields.
** The bug I'm seeing with newer versions of the 3.51 ODBC Driver is
that LONGTEXT are coming back as C(255) fields.
** The program will cleanup the test table it creates (provided your
login has security rights for create & drop table).
CLEAR
CLOSE ALL
LOCAL loSPT, lcExec, lcDriver, lcServer, lcUserId, lcPassword,
lcCStr, lcDatabase, lcTable, lcDTString
******************************************
** Change these to meet your situation **
lcDriver = "MySQL ODBC 3.51 Driver"
lcServer = "127.0.0.1"
lcUserId = "root"
lcPassword = "rootpw"
lcDatabase = "test"
lcTable = "mysqlbug"
******************************************
lcCStr =
"DRIVER="+lcDriver+";SERVER="+lcServer+";DATABASE=test;UID="+lcUserID+";PWD=
"+lcPassword
?lcCStr
lcDTString = lcDatabase + "." + lcTable
?lcDTString
?
*Create class to handle SPT
loSPT = CREATEOBJECT("SPTClass",lcCStr)
IF VARTYPE(loSPT) = "O"
*Create Table
TEXT TO lcExec NOSHOW TEXTMERGE
CREATE TABLE `<<lcDatabase>>`.`<<lcTable>>` (
`id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
`t` TEXT NOT NULL ,
`mt` MEDIUMTEXT NOT NULL,
`lt` LONGTEXT NOT NULL ,
PRIMARY KEY(`id`)
)
ENGINE = InnoDB;
ENDTEXT
?lcExec
IF loSPT.Execute(lcExec) > 0
*Return columns
IF SQLCOLUMNS(loSPT.nHandle,lcDTString) > 0
BROWSE
ENDIF
*Drop the table
lcExec = "DROP TABLE " + lcDTString
=loSPT.Execute(lcExec)
ENDIF
ENDIF
DEFINE CLASS SPTClass AS Custom
nHandle = -1
cConnStr = ""
nExecTimeSecs = 0
FUNCTION Init
LPARAMETERS tcConnStr,tlNoAutoConnect
THIS.cConnStr = tcConnStr
IF !tlNoAutoConnect
RETURN THIS.Connect()
ENDIF
ENDFUNC
FUNCTION Destroy
THIS.Disconnect()
ENDFUNC
FUNCTION Connect
IF !EMPTY(THIS.cConnStr)
THIS.nHandle = SQLSTRINGCONNECT(THIS.cConnStr)
IF THIS.nHandle < 0
THIS.LogError(THIS.nHandle)
ENDIF
ENDIF
ENDFUNC
FUNCTION Disconnect
LOCAL lnResult
IF THIS.nHandle > 0
lnResult=SQLDISCONNECT(THIS.nHandle)
IF lnResult < 0
THIS.LogError(lnResult)
ENDIF
ENDIF
ENDFUNC
FUNCTION GetLastExecTime
RETURN THIS.nExecTimeSecs
ENDFUNC
FUNCTION Execute
LPARAMETERS tcCmd, tcAlias
LOCAL lnSecs, lnResult
lnSecs = 0
IF THIS.nHandle > 0 AND !EMPTY(tcCmd)
lnSecs = SECONDS()
IF VARTYPE(tcAlias)="C"
lnResult =
SQLEXEC(THIS.nHandle,tcCmd,tcAlias)
ELSE
lnResult = SQLEXEC(THIS.nHandle,tcCmd)
ENDIF
lnSecs = SECONDS() - lnSecs
THIS.nExecTimeSecs = lnSecs
IF lnResult < 0
THIS.LogError(lnResult)
ENDIF
ENDIF
RETURN lnResult
ENDFUNC
FUNCTION LogError
LPARAMETERS tnResult
LOCAL ARRAY laError[1]
AERROR(laError)
MESSAGEBOX(laError[2],16,"Error " + TRANSFORM(laError[5]))
ENDFUNC
ENDDEFINE*********************************
[excessive quoting removed by server]
_______________________________________________
Post Messages to: [email protected]
Subscription Maintenance: http://leafe.com/mailman/listinfo/profox
OT-free version of this list: http://leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/[EMAIL PROTECTED]
** All postings, unless explicitly stated otherwise, are the opinions of the
author, and do not constitute legal or medical advice. This statement is added
to the messages for those lawyers who are too stupid to see the obvious.