Połączenie odbc z MySQL

0

Cześć,
walcze z połączeniem serwera, który napisałem w Lazarusie, z bzą danych MySQL na maszynie z Ubuntu.
Zainstalowałem wszystko zdaje mi się poprawnie. Konfiguracja ODBC wygląda tak:

odbcinst.ini:

[myodbc_mysql]
Description     = ODBC for MySQL
Driver          = /usr/lib/i386-linux-gnu/odbc/libmyodbc.so
Setup           = /usr/lib/i386-linux-gnu/odbc/libodbcmyS.so
UsageCount      = 1

odbc.ini:

[myodbc_mysql_dsn]                         # this is your system DSN
Description = description of your DSN
Driver      = myodbc_mysql                 # custom driver name
Server      = localhost                    # or external IP if needed
Port        = 3306                         # or custom port if needed
Socket      = /var/run/mysqld/mysqld.sock  # socket, see above
Database    =                      # MySQL DB name or empty
Option      = 3
ReadOnly    = No

Kiedy w terminalu wpisuje

isql -v user password

otrzymuje poprawne połączenie za pomocą ODBC i mogę działać na bazie z poziomu terminala.

+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL>

Kiedy jednak tworzę połączenie w mojej aplikacji nie może się ona połączyć z bazą. Połączenie tworze w ten sposób:

with AConnection do
 begin
      Driver := 'myodbc_mysql_dsn'; //roznie juz probowalem, wpisywalem tez "myodbc_mysql" - jak musi byc?;)
      Params.Add('Trusted_Connection=Yes');
      Params.Add('DATABASE=mydb');
      Params.Add('HostName=MyHost');
      Params.Add('UserName=root');
      Params.Add('Password=password');
 end;

Próbowałem już na tuzin różnych sposobów modyfikować te parametry połączenia ale ciągle brak rezultatu. Możecie mi podpowiedzieć jak prawidłowo sparametryzować takie połączenie? Na Windowsie z poprawnie skonfigurowanym ODBC takie połączenie śmiga bez zarzutu. Na Ubuntu coś dalej jest nie tak:(

Dzieki!

2

Ale dlaczego ODBC? Przecież lazarus ma natywne komponenty do MySQLa http://wiki.lazarus.freepascal.org/MySQLDatabases

0

Dzieki!
Nie zaglebialem sie jeszcze w to ale widze ze tam jest napisane ze to "visual components" - ja mam aplikacje konsolowa.

3

no a kto Ci zabroni ich używać z kodu?

0

Dzieki, zamienilem polaczenie odbc na zwykle TSQLConnection i moge polaczyc sie z baza. Pojawil sie jednak inny problem. Kiedy wykonuje polecenie AQuery.Open dostaje komunikat: My application raised exception class 'RunError (211).

Cale polaczenie konfiguruje w ten sposob:

AConnection:=TSQLConnection.Create(nil);
ATransaction:=TSQLTransaction.Create(nil);
AQuery:=TSQLQuery.Create(nil);


with AConnection do
 begin
 HostName:='localhost';
 DatabaseName:='baza';
 Username:='root';
 Password:='haslo';
 end;

AConnection.Transaction:=ATransaction;
ATransaction.DataBase:=AConnection;
AQuery.DataBase:=AConnection;

Na moim kompie dzialalo to bez problemu. Jak odpalam to na serwerze to dostaje taki blad :( Prosze o pomoc.

Zapytanie przygotowuje standardowo:

 AQuery.SQL.Text := 'select * FROM users where user = :USER and pass= :PASS';
 AQuery.Params.ParamByName('USER').AsString:=user.Text;
 AQuery.Params.ParamByName('PASS').AsString:=pass.Text;

Zaczyna powoli mnie przerastac proba odpalenia swojego serwera na jakies wirtualnej maszynie...

1

ale dlaczego jesteś taki uparty nie nie skorzystasz z komponentów wprost przeznaczonych do MySQLa??? Przecież masz tam TMySQLConnection

0

Dzięki za pomoc.
Walczyłem z tym kilka dni....

Faktycznie okazało się, że jakieś cuda w stylu ODBC są zbyteczne. Próbowałem użyć TMySQLConnection ale pojawiały się ciągle jakieś błędy. W końcu doszedłem do wniosku, że problem leży po stronie samego Lazarusa. Przeinstalowałem wszystko jeszcze raz, ściągnąłem pliki ręcznie i zainstalowałem najnowszą wersję bo korzystając z komend w terminalu ubuntu ściągały się jakieś starsze (poza tym był problem w konfiguracji środowiska)...

Śmiga jak marzenie :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1