ODBC i M$SQL
Martin Lukasik - 22-04-2006 00:14
ODBC i M$SQL
Hej, ho... Niestety musze sie podlaczyc pod baze MSSQL. Nawiazujac do FAQ, moge na dwa sposoby: poprzez driver sybase albo ODBC. No to wybralem "bramke nr 2" -- ODBC.
Problem jest banalny, ale juz mi rece opadaja. Zainstalowalem wszystko, a DBD::ODBC nie moze otworzyc biblioteki libodbc.so.1. Biblioteka znajduje sie w /usr/local/lib, skopiowalem ja juz wszystkie mozliwe miejsca, razem z biezacym katalogiem, w ktorym znajduje sie skrypt. I dalej w nagrode dostaje:
[root@buddy -mssql]# ./testproc.pl install_driver(ODBC) failed: Can't load '/usr/lib/perl5/5.8.5/i386-linux-thread-multi/auto/DBD/ODBC/ODBC.so' for module DBD::ODBC: libodbc.so.1: cannot open shared object file: No such file or directory at /usr/lib/perl5/5.8.5/i386-linux-thread-multi/DynaLoader.pm line 230. at (eval 1) line 3 Compilation failed in require at (eval 1) line 3. Perhaps a required shared library or dll isn't installed where expected at ./testproc.pl line 8
Jak sprawdzic skad on probuje przeczytac ten libodbc.so.1? Za cholere nie moge sobie poradzic :-(
HEEEELP!
Dzieki z gory, Marcin
=?ISO-8859-2?Q?Zbigniew_Kempczy=F1ski?= - 22-04-2006 00:14
Użytkownik Martin Lukasik napisał:
> Jak sprawdzic skad on probuje przeczytac ten libodbc.so.1? Za cholere nie > moge sobie poradzic :-(
Sprobuj:
> strace ./testproc.pl
i przeanalizuj open -- ============================= Zbigniew Kempczyński http://it.marton.pl/wegorz/ =============================
Martin Lukasik - 25-04-2006 00:04
> Sprobuj: > > > strace ./testproc.pl > > i przeanalizuj open
Super. Wprawdzie standardowo jest to tylko na debianie, ale sciagnalem, skompilowalem i dziala ekstra. Teraz nowy problem:
[root@asterisk1 -mssql]# ./testproc.pl DBI connect('193.38.52.145','root',...) failed: [unixODBC][Driver Manager]Data source name not found, and no default driver specified (SQL-IM002)(DBD: db_login/SQLConnect err=-1) at ./testproc.pl line 11 Can't connect: [unixODBC][Driver Manager]Data source name not found, and no default driver specified (SQL-IM002)(DBD: db_login/SQLConnect err=-1) at ../testproc.pl line 11.
Nie wiem jak ten kiczowaty sterownik mam wpakowac do connect(). Nigdzie zadnej dokumentacji, niedobrze mi sie robi. Podlaczenie do mysql-a zajelo mi moze z 5 minut z instalacja modulow wlacznie, a z tym mssql-em mecze sie juz ktorys dzien z kolei...
Ktos to probowal "odpalic"?
Pomozcie bo juz wysiadam...
Dzieki, m.
Krzysztof Juszkiewicz - 25-04-2006 00:04
Martin Lukasik wrote in group pl.comp.lang.perl: >DBI connect('193.38.52.145','root',...) failed: [unixODBC][Driver >Manager]Data source name not found, and no default driver specified >Ktos to probowal "odpalic"? >Dzieki, >m. Tego nie, ale może spróbuj tak zrobić connect: http://pl.wikibooks.org/wiki/Perl_faq/Bazy_danych KJ -- _ _ ___ | |/ / |_ _| Krzysztof Juszkiewicz http://www.kt.agh.edu.pl/~juszkiew/ |_|\_\ |_| Dept. of Telecommunications http://www.kt.agh.edu.pl/ AGH AGH pl.comp.lang.perl FAQ: http://www.kt.agh.edu.pl/other/perl/faq/
=?ISO-8859-2?Q?Zbigniew_Kempczy=F1ski?= - 25-04-2006 00:04
Użytkownik Martin Lukasik napisał: >>Sprobuj: >> >> >>>strace ./testproc.pl >> >>i przeanalizuj open > > > Super. Wprawdzie standardowo jest to tylko na debianie, ale sciagnalem, > skompilowalem i dziala ekstra. > Teraz nowy problem: > > [root@asterisk1 -mssql]# ./testproc.pl > DBI connect('193.38.52.145','root',...) failed: [unixODBC][Driver > Manager]Data source name not found, and no default driver specified > (SQL-IM002)(DBD: db_login/SQLConnect err=-1) at ./testproc.pl line 11 > Can't connect: [unixODBC][Driver Manager]Data source name not found, and no > default driver specified (SQL-IM002)(DBD: db_login/SQLConnect err=-1) at > ./testproc.pl line 11. > > Nie wiem jak ten kiczowaty sterownik mam wpakowac do connect(). > Nigdzie zadnej dokumentacji, niedobrze mi sie robi. > Podlaczenie do mysql-a zajelo mi moze z 5 minut z instalacja modulow > wlacznie, a z tym mssql-em mecze sie juz ktorys dzien z kolei... > > Ktos to probowal "odpalic"? >
Pokaż źródło, ten komunikat jak dla mnie jest trochę enigmatyczny. Z kolei masz w /etc/ld.so.conf /usr/local/lib? -- ============================= Zbigniew Kempczyński http://it.marton.pl/wegorz/ =============================
Martin Lukasik - 25-04-2006 00:04
> Tego nie, ale może spróbuj tak zrobić connect: > http://pl.wikibooks.org/wiki/Perl_faq/Bazy_danych > KJ
A przegladales ten dokument? Bo ja tak, i poza informacjami w stylu "sciagnij, zainstaluj i sie podlacz" to niewiele tam jest. Wlasciwie to guzik tam jest.
m.
Martin Lukasik - 25-04-2006 00:04
> Pokaż źródło, ten komunikat jak dla mnie jest trochę enigmatyczny. > Z kolei masz w /etc/ld.so.conf /usr/local/lib?
use strict; use DBI;
my $dbh=DBI->connect("DBI:ODBC:193.38.1.1", "root", "Beef") or die "Can't connect: $DBI::errstr"; $dbh->do("DROP TABLE table1"); $dbh->do("CREATE TABLE table1 (i INTEGER)"); $dbh->do("DROP PROCEDURE proc1"); my $proc1 = "CREATE PROCEDURE proc1 AS ". "BEGIN". " INSERT INTO table1 VALUES (100);". # breaks fetchrow_array " SELECT 9;". "END";
$dbh->do ($proc1);
# Execute it: if (-e "dbitrace.log") { unlink("dbitrace.log"); } $dbh->trace(9, "dbitrace.log"); my $sth = $dbh->prepare ("exec proc1"); $sth->execute (); do { while (my $result = $sth->fetchrow_array()) { print "result = $result\n"; } } while ($sth->{odbc_more_results}); $dbh->disconnect;
W sumie to chyba musze cos pomieszac w odbc.ini i odbcinst.ini, ale normalnych opisow co i jak jak na lekarstwo. Az mi sie smutno robi...
Jak to skonfiguruje to moze sam cos napisze.
m.
Krzysztof Juszkiewicz - 25-04-2006 00:04
Martin Lukasik wrote in group pl.comp.lang.perl: >> http://pl.wikibooks.org/wiki/Perl_faq/Bazy_danych >A przegladales ten dokument? Bo ja tak, i poza informacjami w stylu >"sciagnij, zainstaluj i sie podlacz" to niewiele tam jest. >Wlasciwie to guzik tam jest. >m. Wiesz, ja go pisałem. Tam jest my $dbh = DBI->connect( "dbi:$dbdbd:$dbname", $username, $password); a u ciebie coś ciut innego. KJ -- _ _ ___ | |/ / |_ _| Krzysztof Juszkiewicz http://www.kt.agh.edu.pl/~juszkiew/ |_|\_\ |_| Dept. of Telecommunications http://www.kt.agh.edu.pl/ AGH AGH pl.comp.lang.perl FAQ: http://www.kt.agh.edu.pl/other/perl/faq/
=?ISO-8859-2?Q?Zbigniew_Kempczy=F1ski?= - 25-04-2006 00:04
Użytkownik Martin Lukasik napisał: >>Pokaż źródło, ten komunikat jak dla mnie jest trochę enigmatyczny. >>Z kolei masz w /etc/ld.so.conf /usr/local/lib? > > > use strict; > use DBI;
Zrób to proszę z
> nl ./testproc.pl
Bo nadal nie mam pewności czy wywala Ci się linia z 'connect'.
-- ============================= Zbigniew Kempczyński http://it.marton.pl/wegorz/ =============================
=?ISO-8859-2?Q?Zbigniew_Kempczy=F1ski?= - 25-04-2006 00:04
Użytkownik Martin Lukasik napisał: >>Pokaż źródło, ten komunikat jak dla mnie jest trochę enigmatyczny. >>Z kolei masz w /etc/ld.so.conf /usr/local/lib? > > > use strict; > use DBI; > > my $dbh=DBI->connect("DBI:ODBC:193.38.1.1", "root", "Beef") or die "Can't > connect: $DBI::errstr";
W dokumentacji http://search.cpan.org/~jurl/DBD-ODBC-1.13/ODBC.pm
piszą
Example (using MSSQL Server): my $DSN = 'driver={SQL Server};Server=server_name; database=database_name;uid=user;pwd=password;'; my $dbh = DBI->connect("dbi:ODBC:$DSN") or die "$DBI::errstr\n";
Czyli raczej connect powinien wyglądać tak:
my $DSN = 'driver={SQL Server};Server=193.38.1.1;database=nazwabazy;uid=r oot;pwd=Beef;'; my $dbh = DBI->connect("dbi:ODBC:$DSN) or die "$DBI::errstr\n";
Nie mam MSSQL serwera więc bazuję na dokumentacji. -- ============================= Zbigniew Kempczyński http://it.marton.pl/wegorz/ =============================
Martin Lukasik - 25-04-2006 00:04
> Wiesz, ja go pisałem.
To nie zmienia faktu, ze jest w stylu "sciagnij zainstaluj i ma dzialac" :-(
> Tam jest > my $dbh = DBI->connect( "dbi:$dbdbd:$dbname", $username, $password); > a u ciebie coś ciut innego.
Owszem Krzysku; ale znowu zapomniales, ze nie rozmawiamy o mysql (do ktorego podlaczylem sie w doslownie 5 minut) tylko o MS SQL. I tu jest problem...
m.
Martin Lukasik - 25-04-2006 00:04
> Bo nadal nie mam pewności czy wywala Ci się linia z 'connect'.
Sorry. Nie ma drivera zdefiniowanego, ot i co.
1 #!/usr/bin/perl -w 2 # $Id: testproc.pl 93 2004-02-19 19:28:16Z jurl $
3 $ENV{'ODBC_HOME'} = "/usr/local/lib"; 4 $ENV{'ODBCHOME'} = "/usr/local/lib";
5 #use strict; 6 use DBI; 7 use DBD::ODBC;
8 # Connect to the database, and create a table and stored procedure: 9 my $dbh=DBI->connect("DBI:ODBC:193.38.1.1", "root", "Beef") or die "Can't connect: $DBI::errstr"; 10 $dbh->do("DROP TABLE table1"); 11 $dbh->do("CREATE TABLE table1 (i INTEGER)"); 12 $dbh->do("DROP PROCEDURE proc1"); 13 my $proc1 = 14 "CREATE PROCEDURE proc1 AS ". 15 "BEGIN". 16 " INSERT INTO table1 VALUES (100);". # breaks fetchrow_array 17 " SELECT 9;". 18 "END";
19 $dbh->do ($proc1);
20 # Execute it: 21 if (-e "dbitrace.log") { 22 unlink("dbitrace.log"); 23 } 24 $dbh->trace(9, "dbitrace.log"); 25 my $sth = $dbh->prepare ("exec proc1"); 26 $sth->execute (); 27 do { 28 while (my $result = $sth->fetchrow_array()) { 29 print "result = $result\n"; 30 } 31 } while ($sth->{odbc_more_results}); 32 $dbh->disconnect;
m.
Martin Lukasik - 25-04-2006 00:04
> W dokumentacji http://search.cpan.org/~jurl/DBD-ODBC-1.13/ODBC.pm > > piszą > > Example (using MSSQL Server): my $DSN = 'driver={SQL > Server};Server=server_name; > database=database_name;uid=user;pwd=password;'; my $dbh = > DBI->connect("dbi:ODBC:$DSN") or die "$DBI::errstr\n"; > > Czyli raczej connect powinien wyglądać tak: > > my $DSN = 'driver={SQL > Server};Server=193.38.1.1;database=nazwabazy;uid=r oot;pwd=Beef;'; > my $dbh = DBI->connect("dbi:ODBC:$DSN) or die "$DBI::errstr\n"; > > Nie mam MSSQL serwera więc bazuję na dokumentacji.
$DSN czytane jest z odbc.ini, gdzie jest zdefiniowany. Ale juz nie wiem jak za to sie zabrac. Niby pisza o tym .ini, Ty mi wklejasz cos, a w przykladach z DBD::ODBC dostaje to, co wkleilem... Slabo mi, ale jeszcze powalcze ;-)
m.
Krzysztof Juszkiewicz - 25-04-2006 00:04
Martin Lukasik wrote in group pl.comp.lang.perl: >Perhaps a required shared library or dll isn't installed where expected > at ./testproc.pl line 8 >Jak sprawdzic skad on probuje przeczytac ten libodbc.so.1? Za cholere nie >moge sobie poradzic :-( >Marcin A próbowałeś tak: ldd /bin/perl skrypt.pl KJ -- _ _ ___ | |/ / |_ _| Krzysztof Juszkiewicz http://www.kt.agh.edu.pl/~juszkiew/ |_|\_\ |_| Dept. of Telecommunications http://www.kt.agh.edu.pl/ AGH AGH pl.comp.lang.perl FAQ: http://www.kt.agh.edu.pl/other/perl/faq/
Dariusz Jackowski - 25-04-2006 00:04
Martin Lukasik wrote: > > Problem jest banalny, ale juz mi rece opadaja. Zainstalowalem > wszystko, a DBD::ODBC nie moze otworzyc biblioteki libodbc.so.1.
Niezrozumiałeś komunikat błędu. Nie masz ustawionej ścieżki do biblioteki współdzielonej ODBC.so albo źle zainstalowałeś DBD::ODBC. Sprawdź czy plik ODBC.so istnieje pod wskazaną ścieżką. Jeśli nie, uruchom CPAN i poprawnie zainstaluj ten pakiet (Perl FAQ napewno pomoże). Jeśli plik istnieje, sprawdź @INC w perl -V. Jeśli podanej ścieżki tam nie ma, wyeksportuj zmienną PERL5LIB z podaną ścieżką.
--asc
Martin Lukasik - 25-04-2006 00:04
> Niezrozumiałeś komunikat błędu. Nie masz ustawionej ścieżki do biblioteki > współdzielonej ODBC.so albo źle zainstalowałeś DBD::ODBC. Sprawdź czy plik > ODBC.so istnieje pod wskazaną ścieżką. Jeśli nie, uruchom CPAN i poprawnie > zainstaluj ten pakiet (Perl FAQ napewno pomoże). Jeśli plik istnieje, > sprawdź @INC w perl -V. Jeśli podanej ścieżki tam nie ma, wyeksportuj > zmienną PERL5LIB z podaną ścieżką.
Zrozumialem. Perlowy modul ODBC nie stanowil problemu. unixODBC tez nie. Ale ten z kolei ladowal driver, ktory byl zainstalowany, tylko magicznie "stworzyly sie" dwa pliki odbc.ini. Jeden w /etc i jeden w /usr/local/etc. Ja mieszalem pierwszym, a okazalo sie, ze to ten drugi.
Wszystko niby dziala... dzieki zainteresowanym.
I tak przy okazji pytanie: sa jakies darmowe drivery do MS SQL pod linuxa? Bo z tego co szukalem to wszyscy chca, zeby im placic. A mi to tak szczerze powiedziawszy nie sluzy do niczego konkretnego, i troche mnie to boli...
Dzieki, Marcin
=?UTF-8?B?RmlsaXAgUmVtYmlhxYJrb3dza2k=?= - 05-05-2006 00:06
Martin Lukasik wrote: >> Niezrozumiałeś komunikat błędu. Nie masz ustawionej ścieżki do biblioteki >> współdzielonej ODBC.so albo źle zainstalowałeś DBD::ODBC. Sprawdź czy plik >> ODBC.so istnieje pod wskazaną ścieżką. Jeśli nie, uruchom CPAN i poprawnie >> zainstaluj ten pakiet (Perl FAQ napewno pomoże). Jeśli plik istnieje, >> sprawdź @INC w perl -V. Jeśli podanej ścieżki tam nie ma, wyeksportuj >> zmienną PERL5LIB z podaną ścieżką. > > Zrozumialem. Perlowy modul ODBC nie stanowil problemu. unixODBC tez nie. Ale > ten z kolei ladowal driver, ktory byl zainstalowany, tylko magicznie > "stworzyly sie" dwa pliki odbc.ini. Jeden w /etc i jeden w /usr/local/etc. > Ja mieszalem pierwszym, a okazalo sie, ze to ten drugi. > > Wszystko niby dziala... dzieki zainteresowanym. > > I tak przy okazji pytanie: sa jakies darmowe drivery do MS SQL pod linuxa?
a freetds nie jest?
BTW - po prześledzeniu tegio wątku cieszę się że za pierwszym razem wybrałem freetds + DBD::Sybase :)
> Bo z tego co szukalem to wszyscy chca, zeby im placic. A mi to tak szczerze > powiedziawszy nie sluzy do niczego konkretnego, i troche mnie to boli... > > Dzieki, > Marcin > >
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
jak to =?ISO-8859-2?Q?zrobi=E6=2E=2E=2E=3F_TSQL_sql_server?==?ISO-8859-2?Q?_?=
Jak =?windows-1250?Q?pobra=E6_szacowan=B9_wielko=9C=E6_zbiory_wy nikowego_w_MS?==?windows-1250?Q?_SQL_2005=3F?=
=?iso-8859-2?Q?=5BMS_SQL=5D_Czy_mo=BFna_wywo=B3a=E6_funkcje_t ylko_raz_dla?==?iso-8859-2?Q?_ca=B3ego_zbioru_=BCr=F3d=B3owego=3F?=
[MSSQL] =?ISO-8859-2?Q?zgodno=B6ci_z_licencjami_Microsoft_?==?ISO-8859-2?Q?SQL_Server?=
=?ISO-8859-2?Q?k=B3opot_z_uruchomieniem_MY_SQL_dla_C?==?ISO-8859-2?Q?MS_i_CRM_na_Fedora_Core_3?=
Oracle PL/SQL Wstawianie =?ISO-8859-2?Q?wynik=F3w_kolekcji_d?==?ISO-8859-2?Q?o_tabeli?=
[MSSQL] ACCESS - SQL =?ISO-8859-2?Q?B=B3ad_w_konwersji_lic?==?ISO-8859-2?Q?zb?=
=?iso-8859-2?Q?=5Bmssql=5D_Zapytania_rekurencyjne__-_czy_sk=B3adnia_sql?==?iso-8859-2?Q?_co=B6_takiego_przewiduje_=3F?=
[Oracle PL/SQL] Cursor i zapis =?ISO-8859-2?Q?rekord=F3w_do_?==?ISO-8859-2?Q?kolejnych_plik=F3w?=
=?iso-8859-2?Q?=5BMySQL=5D_Co_minimalnie_potrzebne_zeby_mie=E 6_klienta_My?==?iso-8859-2?Q?SQL_na_Linuxie=3F?=
zanotowane.pldoc.pisz.plpdf.pisz.plmarcelq.xlx.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|