ODBC-Zugriff auf MySQL mit LotusScript unter Linux

  • Hallo zusammen,


    ich möchte mittels LotusScript via ODBC auf eine MySQL-Datenbank zugreifen. Das ganze auf einem Domino 6.5.5, der auf Suse Linux Enterprise Server läuft.


    Die ODBC-Verbindung zu MySQL habe ich erfolgreich eingherichtet, dabei habe ich für den Treibermananger auf unixODBC zurückgegriffen. Mit dem isql-Kommando kann ich eine Verbindung herstellen.


    Soweit, so gut.


    Leider bekomme ich jedoch beim Start eines serverseitig laufenden Script-Agenten folgende Fehlermeldung:


    03/19/2007 11:44:16 AMgr: Agent ('ODBC' in 'Test.nsf') error message: Error loading USE or USELSX module: *lsxodbc


    Es scheint also bereits beim Einbinden der lsxodbc ein Problem zu geben. Das lässt sich übrigens auch auf einem anderen Domino-Server unter Linux nachstellen.
    Woran kann's liegen ?


    Beste Grüße


    Ozzy

  • Ich habe folgenden Agent laufen (ohne ODBC Connection)


    Code
    Sub Initialize	Dim src As New LCConnection ("oledb") 	Dim fldLst As New LCFieldList	Dim fld As LCField	Dim count As Integer	Dim fields(3) As String	fields(0) = "R_OperatingSystemDescription"  'These are the field names	fields(1) = "R_OperatingSystem.Version"	'fields(2) = "third"	'fields(3) = "fourth"  ' set the appropriate properties to connect	src.Provider = "SQLOLEDB"  'standard for SQL server	src.Init_DataSource = "xxxxxxxxxxxx"	src.Database = "Insight_v50_xxxxxxxx"	src.Userid = "xxxxxxx"	src.Password = "xxxxxxxxxxx"	src.Connect	Dim query_invent As String	query_invent = "select R_OperatingSystem.Description AS R_OperatingSystemDescription, R_OperatingSystem.Version, R_OperatingSystem.OSType from R_OperatingSystem " & _	"WHERE ((R_OperatingSystem.SnapShotID=-1) OR (R_OperatingSystem.SnapShotID is NULL)) AND DeviceKey in (select devices.deviceKey from devices " & _	"JOIN notices ON devices.deviceKey = notices.deviceKey and notices.NoticeType = 1 LEFT OUTER JOIN DB_deviceInfoEx ON devices.deviceKey = DB_deviceInfoEx.deviceKey LEFT OUTER JOIN IPAddress ON devices.deviceKey = IPAddress.deviceKey and IPAddress.ipIndex = 0 LEFT OUTER JOIN IPXAddress ON devices.deviceKey = IPXAddress.deviceKey and IPXAddress.ipxIndex = 0 LEFT OUTER JOIN associated_device_data ON devices.deviceKey = associated_device_data.deviceKey " & _	"LEFT OUTER JOIN deviceProtocolInfo ON devices.deviceKey = deviceProtocolInfo.deviceKey LEFT OUTER JOIN ppaStatus ON devices.deviceKey = ppaStatus.deviceKey  LEFT OUTER JOIN LockdownStatus ON devices.deviceKey = LockdownStatus.deviceKey  LEFT OUTER JOIN vmmStatus ON devices.deviceKey = vmmStatus.deviceKey  LEFT OUTER JOIN DeviceStatusValue ON devices.deviceKey = DeviceStatusValue.deviceKey and DeviceStatusValue.StatusSourceId= 6 JOIN consolidatedNodeAuths ON devices.mxGuid = consolidatedNodeAuths.NodeId and consolidatedNodeAuths.userID = '00000000864162de0000000400000009' " & _	"WHERE (  devices.Name = 'xxxxxxxxxxxx'  )  )  order by R_OperatingSystem.Description ASC"  ' now connected, we can execute a selection statement	'If (src. Execute ("SELECT Name, Description from CIM_ComputerSystem",  fldLst) = 0) Then	If (src. Execute (query_invent,  fldLst) = 0) Then		Print "No records were fetched."		End	End If  ' fetch each record from the result set	While (src.Fetch (fldLst) > 0)		Forall field In fields			Set fld = fldLst.Lookup(field)			Print fld.Text(0)		End Forall	Wend	If (count = 0) Then Print "No records were fetched."End Sub


    unter options steht dann noch:


    Code
    Option Public
    Uselsx "*LSXLC"



    Das ganze läuft zwar unter Windows, aber ich habe keine ODBC Connection eingerichtet. Das war mir zuviel rumgehampel im OS, ich wollte das alles in einer DB haben mit der ich ohne weiteres auf einen anderen Server umziehen kann...


    Der User muss natürlich rechte auf die SQL DB haben... aber das versteht sich ja von selbst ;)

  • Hallo Bastian,


    danke für den Code ! Ich werde das mal adaptieren für meine Zwecke. Letzten Endes ist es mir eigentlich egal, wie die Verbindung zustande kommt.
    Hauptsache ich komme an die Daten !


    Gruß


    Ozzy

  • Hallo Bastian,


    leider hatte ich mit Deinem Script keinen Erfolg.
    Grund: Den oledb-Connector habe ich auf meinem Linux-System nicht zur Verfügung.


    Wahrscheinlich müsste ich dazu noch LEI haben, und das muss ja - glaube ich - immer noch separat gekauft werden.


    Aber immerhin kann ich den ODBC2-Connector der LSX verwenden. Somit bleibts dann eben doch bei ODBC - nur eben nicht mit LS:DO sonder via LSX. Insofern hat mir Dein Tipp dann doch ein Stück weiter geholfen.


    Gruß


    Ozzy

  • OleDb hat nichts mit LEI zu tun sondern ist die Microsoft ADO Schnittstelle und die gibt es meines Wissens nach bisher nicht für Linux oder andere Nicht Windows Systeme.


    Also selbst wenn du LEI kaufen würdest bräuchtest du die Treiber immer noch

  • Bei mir lauft es per ODBC auf linux , hab meinen SystemAdmin gebeten ODBC auf dem LINUX server zu installieren und es klapt genau so wie auf windows.

  • taurec: Das OLEDB nur mit Microsoft-Büchsen läuft, wäre meine zweite Vermutung gewesen, die Du hiermit bestätigt hast :D !


    Wie auch immer: ODBC habe ich ja auf dem Linux-Server selbst installiert (jaja, ich bin auch mein eigener Admin ;-)), und es läuft ja auch.


    Und mit lsxlc kriege ich den Zugriff ja nun hin, also bleibt's eben dabei. Wäre eben nur noch die "akademische" Frage offen, warum LS:DO nicht klappt ... aber darüber zerbreche ich mir jetzt nicht mehr weiter den Kopf.


    Grüsse & Dank an alle Helfer


    Ozzy