Aktuelle Zeit: 25.04.2019 00:20

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 12 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
 Betreff des Beitrags: ODBC-Datenbankzugriff unter Linux für Dummies
BeitragVerfasst: 09.01.2019 21:26 
Offline

Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge
Geschichte:

Zitat:
iODBC Configuration Script
iODBC Driver Manager 3.52.9
Copyright (C) 1996-2014 OpenLink Software
Please report all bugs to <iodbc@openlinksw.com>

iodbc-config --libs
-L/usr/lib/x86_64-linux-gnu -liodbc -liodbcinst

Bei PureBasic bekomme ich immer nur:

/usr/bin/ld: cannot find -lodbc
collect2: error: ld returned 1 exit status

...

Ich habe das hier installiert:

sudo apt-get install libiodbc2-dev
______________________________
Ich habe ein paar Änderungen gemacht, da eine normale IODBC -Installation bei mir nicht funktioniert.

Im Verzeichnis "/usr/lib/x86_64-linux-gnu" habe ich die installierten Libs "iodbc" und "iodbcinst" einfach manuell in "odbc" und "odbcinst" umgenannt.

Jetzt kommt bei:

Debug UseODBCDatabase()

folgendes: 94740839224784
(Also keine Null und die Lib wird auch gefunden.)
Es wird aber leider immer per Standard-Installation auch eine Lib "odbc" im oben genannten Verzeichnis installiert (diese habe ich gelöscht (weil diese irgendwie nicht vom "ld" gefunden wird, obwohl diese genau so heißt) und gegen die umbenannte "iodbc"-Lib ersetzt.)

Jetzt habe ich mir mal eine Test-ODBC-Datenbank heruntergeladen, aber nach dem Öffnen hängt sich PureBasic auf.

Wenn ich es so versuche:
If CreateFile(0, DatabaseFile$)
...
If OpenDatabase(0, DatabaseFile$, "", "", #PB_Database_ODBC)
(Also eine leere Datenbank, oder ?)

kommt nur: Can't open database !


Hat jemand Tipps ?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: ODBC-Datenbankzugriff unter Linux für Dummies
BeitragVerfasst: 09.01.2019 22:04 
Offline

Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge
Wie muss ich, bzw muss ich "/etc/odbcinst.ini" und/oder "/etc/odbc.ini" noch irgendwie konfigurieren ?

Wie muss das konfiguriert werden ?
Bsp:

Zitat:
[testing]
Description = Meine Datenbank
Driver = TestDriver
Server = 127.0.0.1
Database = tolleDB
UID = root
PWD = tolleDB


Zitat:
[TestDriver]
Description = TestDriver
Driver = /usr/lib/x86_64-linux-gnu/libodbc.so
Setup = /usr/lib/x86_64-linux-gnu/libodbc.so


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: ODBC-Datenbankzugriff unter Linux für Dummies
BeitragVerfasst: 10.01.2019 00:24 
Offline
Benutzeravatar

Registriert: 08.09.2004 00:57
Wohnort: Berlin
Linux hat früher IODBC genutzt, nutzt aber inzwischen UnixODBC, da IODBC nicht immer im Paketmanager verfügbar!
Ob diese jetzt Kompatibel sind oder es egal ist, welchen man nutzt, kann ich aber nicht sagen.

_________________
PureBasic 5.70 | SpiderBasic 2.21 | Windows 10 Pro (x64) | Linux Mint 19.1 (x64)
"Die Jugend von heute mit ihren Ballerspielen, hocken nur in der Bude - wir haben früher die Leute noch draußen erschossen!"
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: ODBC-Datenbankzugriff unter Linux für Dummies
BeitragVerfasst: 10.01.2019 01:57 
Offline
Benutzeravatar

Registriert: 24.11.2004 13:12
Wohnort: Germany
Wollte mich auch mal wieder damit beschäftigen nach der Umstellung auf unixODBC

Zur installation der aktuellen Version
Zitat:
sudo apt-get install unixodbc-dev unixodbc-bin unixodbc


Link zu unixODBC und in diesen weitere link zu dem Datenbank Treibern

http://www.unixodbc.org/

_________________
Alles ist möglich, fragt sich nur wie...
Projekte EventDesigner v1.x / OOP-BaseClass-Modul / OPC-Helper DLL
PB v3.30 / v5.4x - OS Mac Mini OSX 10.xx / Window 10 Pro. (X64) /Window 7 Pro. (X64) / Window XP Pro. (X86) / Ubuntu 14.04
Downloads auf Webspace


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: ODBC-Datenbankzugriff unter Linux für Dummies
BeitragVerfasst: 11.01.2019 19:15 
Offline

Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge
Hallo mk-soft!

Ich hatte es auch erst mit "unixodbc" probiert, da lieferte PureBasic aber nur haufen Fehlermeldungen das es Funktion "xyz" nicht finden kann.

Mit den umgenannten "iodbc" - Libs ging es dann.
PureBasic konnte die Lib finden und linken.
Aber eine Erstellung/Verbindung zu einer Datenbank war unmöglich.

Ich habe dann mal komplett aufgeräumt und jetzt auch teilweise manuell Pakete aus dem Verzeichnis "/var/lib/dpkg/info" gelöscht, weil Synaptic sich absolut weigerte Abhängigkeiten aufzulösen/ bzw. Pakete auch nicht mehr mit "--force" deinstallierte.
Ich habe dann fehlerhafte "odbc-Dateien" manuell gelöscht und alles was mit ODBC zutuen hat.

Danach habe ich "sudo apt-get install unixodbc-dev unixodbc-bin unixodbc" installiert und es scheint zu funktionieren.

Trotzdem brauche ich eigentlich kein ODBC unter Linux.
(Ist schon ganz schön nervig mit dieser Treiber-Geschichte)

100% zufrieden bin ich aber noch nicht, weil ich bis jetzt nur bis zu dieser Fehlermeldung gekommen bin:
"Can't open database !"


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: ODBC-Datenbankzugriff unter Linux für Dummies
BeitragVerfasst: 11.01.2019 19:51 
Offline
Benutzeravatar

Registriert: 24.11.2004 13:12
Wohnort: Germany
Ist schon nervig das mit den Datenbanken zum zu laufen bekommen (Bis jetzt noch nicht hin bekommen)

Bis jetzt habe ich das auch nicht gebraucht und verwende in der Regel SQLite.

Dafür funktioniert jetzt aber MySQL mit "libmariadb.so" für Linux und "libmariadb.dylib" für MacOS, sowie "libmariadb.dll".
Ich habe ein Buffalo-NAS mit MySQL Datenbank. Funktioniert super schnell.

_________________
Alles ist möglich, fragt sich nur wie...
Projekte EventDesigner v1.x / OOP-BaseClass-Modul / OPC-Helper DLL
PB v3.30 / v5.4x - OS Mac Mini OSX 10.xx / Window 10 Pro. (X64) /Window 7 Pro. (X64) / Window XP Pro. (X86) / Ubuntu 14.04
Downloads auf Webspace


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: ODBC-Datenbankzugriff unter Linux für Dummies
BeitragVerfasst: 12.01.2019 00:04 
Offline

Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge
Hallo mk-soft,

ja das klingt interessant.

Warum gibt es eigentlich laut Hilfe eine Konstante "#PB_Database_MySQL", die PureBasic aber garnicht kennt ?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: ODBC-Datenbankzugriff unter Linux für Dummies
BeitragVerfasst: 12.01.2019 00:36 
Offline
Benutzeravatar

Registriert: 08.09.2004 00:57
Wohnort: Berlin
Zitat:
Warum gibt es eigentlich laut Hilfe eine Konstante "#PB_Database_MySQL", die PureBasic aber garnicht kennt ?

Da hat wohl jemand geschlafen :mrgreen:
PB sollte die eigentlich kennen. Dient der Nutzung der MySQL Datenbank, wenn OpenDatabase()
Wird wahrscheinlich = 4 sein.

_________________
PureBasic 5.70 | SpiderBasic 2.21 | Windows 10 Pro (x64) | Linux Mint 19.1 (x64)
"Die Jugend von heute mit ihren Ballerspielen, hocken nur in der Bude - wir haben früher die Leute noch draußen erschossen!"
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: ODBC-Datenbankzugriff unter Linux für Dummies
BeitragVerfasst: 12.01.2019 02:36 
Offline
Benutzeravatar

Registriert: 24.11.2004 13:12
Wohnort: Germany
Es ist Vier...
Code:
;-TOP

;IncludeFile "mysql.pbi"

; ---------------------------------------------------------------------------------------

CompilerIf #PB_Compiler_OS = #PB_OS_MacOS

  Procedure.s GetAppPath()
    Protected bundlePathPtr = CocoaMessage(0,CocoaMessage(0,CocoaMessage(0,0,"NSBundle mainBundle"),"bundlePath"),"UTF8String")
    If bundlePathPtr
      Protected bundlePath.s = PeekS(bundlePathPtr,-1,#PB_UTF8) + "/"
    EndIf
    ProcedureReturn bundlePath
  EndProcedure
 
  ; ---------------------------------------------------------------------------------------
 
  Procedure.s GetResourcePath()
    Protected bundlePathPtr = CocoaMessage(0,CocoaMessage(0,CocoaMessage(0,0,"NSBundle mainBundle"),"resourcePath"),"UTF8String")
    If bundlePathPtr
      Protected bundlePath.s = PeekS(bundlePathPtr,-1,#PB_UTF8) + "/"
    EndIf
    ProcedureReturn bundlePath
  EndProcedure
 
  ; ---------------------------------------------------------------------------------------
 
 
  libdb.s = GetAppPath() + "Contents/Library/libmariadb.dylib"
 
 
  If UseMySQLDatabase(libdb) = 0
    Debug "Error MySQL"
    End
  EndIf
 
CompilerElse
 
    If UseMySQLDatabase() = 0
    Debug "Error MySQL"
    End
  EndIf
 
CompilerEndIf


UseSQLiteDatabase()

Procedure CheckDatabaseUpdate(Database, Query$)
  Result = DatabaseUpdate(Database, Query$)
  If Result = 0
    Debug "Error Update: " + DatabaseError() + #LF$ + Query$
  EndIf
 
  ProcedureReturn Result
EndProcedure

Procedure CheckDatabaseQuery(Database, Query$)
  Result = DatabaseQuery(Database, Query$)
  If Result = 0
    Debug "Error Query: " + DatabaseError() + #LF$ + Query$
  EndIf
 
  ProcedureReturn Result
EndProcedure

database.s = "host=server port=3306 dbname=developer"
user.s = "developer"
pass.s = "purebasic"

CompilerIf Defined(PB_Database_MySQL, #PB_Constant) = 0
  #PB_Database_MySQL = 4
CompilerEndIf
   
If OpenDatabase(0, database, user, pass, #PB_Database_MySQL)
  CheckDatabaseUpdate(0, "CREATE TABLE IF NOT EXISTS food (name CHAR(50), weight INT)")
  CheckDatabaseUpdate(0, "DELETE FROM food")
 
  CheckDatabaseUpdate(0, "INSERT INTO food (name, weight) VALUES ('apple', '12')")
  CheckDatabaseUpdate(0, "INSERT INTO food (name, weight) VALUES ('pear', '5')")
  CheckDatabaseUpdate(0, "INSERT INTO food (name, weight) VALUES ('banana', '25')")
 
  If CheckDatabaseQuery(0, "SELECT * FROM food WHERE weight > 0")
    While NextDatabaseRow(0)
      Debug "Food = " + GetDatabaseString(0, 0) + " Weight = " + GetDatabaseLong(0, 1)
    Wend
    FinishDatabaseQuery(0)
  EndIf
 
  CloseDatabase(0)
Else
  Debug "Can't open database !"
  CallDebugger
EndIf


P.S.
Ach ja,
Für MacOS verwende ich das Tool MyAppData um die Lib mit in die App zu packen...
Link: https://www.purebasic.fr/english/viewto ... 19&t=61638

_________________
Alles ist möglich, fragt sich nur wie...
Projekte EventDesigner v1.x / OOP-BaseClass-Modul / OPC-Helper DLL
PB v3.30 / v5.4x - OS Mac Mini OSX 10.xx / Window 10 Pro. (X64) /Window 7 Pro. (X64) / Window XP Pro. (X86) / Ubuntu 14.04
Downloads auf Webspace


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: ODBC-Datenbankzugriff unter Linux für Dummies
BeitragVerfasst: 12.01.2019 14:02 
Offline

Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge
Hallo!

Ja 4 stimmt!

Das mit dem MySQL /MariaDB ist toll, weil es funktioniert und schneller ist als SQLLite.

Aber auch viel umständlicher mit der Konfigurierung.

Ich musste erst ein Passwort für den Benutzer "root" setzten, weil sonst kein Zugriff möglich war.
Auch konnte ich keine Verbindung über "localhost" herstellen, sondern musste "host=127.0.0.1" schreiben. (Was eigentlich das selbe ist, oder ?)
Mit einem anderen angelegten Benutzer (außer root) konnte ich bisher noch keine Verbindung aufbauen.

Aber ich kann jetzt wenigstens ohne "sudo " einfach nur per "mysql" auf das "Config-Tool" zugreifen.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 12 Beiträge ]  Gehe zu Seite 1, 2  Nächste

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye