Seite 1 von 1

Probleme mit Öffnen einer MySQL Datenbank

Verfasst: 29.10.2021 14:30
von MenschMarkus
Hallo zusammen,

ich bin gerade dabei Daten aus einer meiner Tabellen aus meiner online DB (MySQL) aus dem Internet auszulesen.
Der Programmcode ist korrekt und funktionstüchtig. Im Debugmodus funktioniert alles einwandfrei. Generiere ich aber eine ausführbare Datei funktioniert der Zugriff nicht mehr. Dabei ist es egal ob ich das Programm in 32 oder 64 bit compiliere.
Erstaunlicherweise gibt ein aufgerufenes DatabaseError() nach OpenDatabase() keine Fehlermeldung aus. Sowohl im Debug Modus wie auch in der ausführbaren Datei.
Ist das nur bei mir so oder gibt es da noch andere betroffene?

Code: Alles auswählen

UseMySQLDatabase()
InitNetwork()
#News = 0
CreateFile(0,"X64_DB_Test.txt")
  If OpenDatabase(#News,"host=my.url.de dbname=my_db_name  port=3306","MyUserName","MyPassword",#PB_Database_MySQL)
    DatabaseQuery(#News,"SELECT * FROM `my_table_name`")
    While NextDatabaseRow(#News)
      WriteStringN(0,GetDatabaseString(#News,DatabaseColumnIndex(#News,"date")))
      WriteStringN(0,GetDatabaseString(#News,DatabaseColumnIndex(#News,headline")))
      WriteStringN(0,GetDatabaseString(#News,DatabaseColumnIndex(#News,"level")))
      WriteStringN(0,GetDatabaseString(#News,DatabaseColumnIndex(#News,"priority")))
      WriteStringN(0,GetDatabaseString(#News,DatabaseColumnIndex(#News,"text")))
    Wend
    FinishDatabaseQuery(#News)
    CloseDatabase(#News)
  Else
    WriteStringN(0,"Open Database failed")
  EndIf
CloseFile(0)
  

Re: Probleme mit Öffnen einer MySQL Datenbank

Verfasst: 29.10.2021 14:36
von TroaX
https://www.purebasic.com/german/docume ... abase.html

UseMySQLDatabase hat einen Parameter, der einen String zum Pfad der libmariadb.dll enthalten muss. Ohne die Datei bzw. den Pfad wird er das wohl nicht gewuppt bekommen. Versuche es mal ohne Pfadangabe, aber mit der DLL im gleichen Ordner wie die Executable. Wenn das nicht geht, trage mal den Pfad ein. Ich denke mal das wird das Problem sein.

Re: Probleme mit Öffnen einer MySQL Datenbank

Verfasst: 29.10.2021 22:36
von MenschMarkus
OK Danke TroaX,
so funktioniert es. Jetzt kann ich weiter arbeiten. Habe in der Tat die Hilfe für MySQL nicht gelesen.

Das erklärt zwar nicht, warum es ohne die explizite Einbindung der DLL beim UseMySQLDatabase() Aufruf im Debug Modus trotzdem funktioniert, in der compilierten Version aber nicht .... /:->
Das zu wissen ist aber für das Projekt nicht relevant.

Re: Probleme mit Öffnen einer MySQL Datenbank

Verfasst: 29.10.2021 23:20
von TroaX
Das liegt daran, weil Purebasic im Debug wohl das ganze automatisch mit der Lib aus dem Compiler-Ordner verknüpft. In einer Build kann das Programm aber nicht einfach davon ausgehen, das der Ordner existiert.

Re: Probleme mit Öffnen einer MySQL Datenbank

Verfasst: 30.10.2021 14:43
von MenschMarkus
Hm,
schade, dass die Lib nicht so eingebunden werde kann wie UserLibs, die ja permanent zur Verfügung stehen.
So muss halt immer die "libmariadb.dll" mit im Programmverzeichnis bzw. verknüpften Verzeichnis stehen.
Die mitgelieferten Libs des Maria DB Systems können ja leider nicht als User Lib mit eingebunden werden.
(Man sieht wohl schon, da kenne ich mich nicht so richtig aus)

Da fällt mir ein, wie war das mit dem direkten Einbinden einer MSSQL DB? Geht das überhaupt? Ich habe da in der Hilfe unter MSSQL leider nichts gefunden. Es gibt ja auch keinen passenden Use Befehl.
Via ODBC ist das kein Problem.