Italian community of Lazarus and Free Pascal
Programmazione => Databases => Topic aperto da: PMR - Febbraio 21, 2016, 03:39:59 pm
-
Buongiorno a tutti,
ho provato a cercare sul forum qualcosa riguardante il problema che sto per esporvi, ma non ho trovato nulla, o almeno non ci sono riuscito io. In rete ho trovato molta documentazione, ma non sono arrivato alla soluzione del problema. Ho sempre lavorato con PHP e qualche progetto l'ho realizzato anche in Delphi e db sempre MySQL. Dovrei continuare ad utilizzarlo ma supportandolo con Lazarus. Diversi anni fa iniziai a studiare questo ambiente, ma per vari motivi ho seguito altre strade. Adesso eccomi nuovamente qui.
Utilizzo Lazarus ver. 1.6 (l'ultima credo) e MySQL Server 5.6.24
Sto provando a seguire questo tutorial, forse un po' datato, ma da qualche parte devo iniziare e questo mi è sembrato abbastanza chiaro
http://www.alevel-computing.x10.mx/TutorialLazarusMySQL.php#Introduction
Al momento della connessione, però, mi viene restituito un errore del tipo:
(http://www.ariadivetro.it/appoggio/errore.jpg)
Ho copiato nella directory, come suggerito, una libmysql.dll che ho trovato in rete, ma nulla. In realtà ho trovato varie dll, ma mi sembra di procedere per tentativi e questa cosa non mi piace molto.
Avete qualche suggerimento?
Grazie per la vostra ttenzione.
-
ciao
sembra che sul tuo pc non ci siano installati i client.
Com'è la situazione il tuo pc fa sia da server che da client o è solo client?
-
Grazie per la risposta.
Sul mio PC c'è installato XAMPP e lavora sia da server che da client.
-
xampp è un sistema portabile e non installa i client sul pc
su questo tutorial ci dovrebbero essere le istruzioni per installare i client
http://www.tutorialspoint.com/mysql/mysql-installation.htm
-
Ho letto, ma non sembra risolvere il problema. Cercando in giro le informazioni che riesco a reperire dicono tutte la stessa cosa più o meno: che sino a MySQL 5 la dll in questione era compresa nel pacchetto e bastava copiarla nella cartella dell'eseguibile (progetto) che si stava sviluppando in lazarus, adesso purtroppo questa dll non viene più utilizzata ed è necessario recuperarla in qualche modo. Quelle che ho recuperato io non funzionano.
Potrei porre la questione anche in altro modo: c'è qualcuno che comunica con MySQL attraverso Lazarus? Come fa?
Grazie!
-
Più che cercare le DLL in rete dovresti usare quelle che hai nella cartella di xampp, almeno sei sicuro che sono della stessa versione (inoltre, se usi Zeos, so che è possibile specificare la fullpath della libreria client).
Come esperienza personale non uso spesso MySql ma ho dovuto installarlo sul pc e non ho avuto questi problemi, probabilmente dovresti fare la stessa cosa anche tu, anche se poi tieni il servizio spento e usi il mysql che c'è in xampp.
-
Il problema è proprio questo. La libreria libmysql.dll non è più contenuta nelle ultime versioni di xampp, che evidentemente utilizza librerie diverse, ma è richiesta da Lazarus.
Tanto per essere più precisi, la complazine chiaramente va a buon fine, ma al momento di connettersi con un Button al DB viene restituito l'errore. L'installazione di MySQL mi funziona senza problemi con PHP e Delphi, tanto per dire.
-
usi zeos o sqldb?
Edit:
leggi in questo thread
http://forum.lazarus.freepascal.org/index.php?topic=16674.0 (http://forum.lazarus.freepascal.org/index.php?topic=16674.0)
(dice di fare attenzione alla versione 32/64 bit e di mettere tutte le dll e non solo quelle)
-
Inizio a temere che il problema sia proprio il "miscuglio" 32/64. Dovrò sistemare una macchina in modo più coerente e poi fare delle prove. Domanda: ma non esistono di Lazarus versioni separate a 32 e 64 bit?
Dimenticavo, sto provando i componenti sqldb.
-
si c'è lazarus a 32 e a 64 (vedi in sourceforge)
cmq, assicurati che i client siano della versione giusta e poi riprova
-
Credo che ci sia qualcosa che mi sfugge in generale. Ho provato con SQLite. Ho scaricato i file necessari, ho creato un db, ma anche in questo caso quando provo a connettermi con Lazarus mi ritorna un errore sulla dll non caricata. Anche qui, credo il problema sia comunque riconducibile alla versione 32/64 bit. Bho!
-
Allora un problema è stato risolto. Adesso Lazarus si connette a SQLite senza problemi. Sono riuscito a trovare (sul sito ufficiale non mi è riuscito) la versione a 64 bit di sqlite.dll, qui:
http://blog.synopse.info/post/2013/03/23/Latest-version-of-sqlite3.dll-for-Windows-64-bit
Sistemata la libreria nella cartella dell'eseguibile la connessione è riuscita senza problemi. Vediamo il seguito.
Per libmysql.dll sarà sicuramente la stessa cosa. La ricerca continua e vi terrò informati.
-
mi è venuto in mente che su sistemi windows a 64 bit, la DLL a 32 potrebbe funzionare se la copi in sia in C:\Windows\System32 che in c:\windows\SysWOW64
facci sapere
nomorelogic
-
Allora anche questa problematica è finalmente risolta. In pratica le librerie sono "sensibili" al numero di bit del sistema operativo e non di Lazarus o altro.
Quindi su Windows a 32 o a 64 bit vanno utilizzate le corrispondenti librerie.
Così tutto funziona nel modo corretto.