Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Połączenie z bazą MySQL z innego komputera

Przemo_2014 06 Oct 2012 20:48 5025 11
  • #1
    Przemo_2014
    Level 19  
    Witam,

    Mam problem z uzyskaniem połączenia z baza MySQL. Program łączący się z baza mysql łączy się bez problemu z bazą pod warunkiem że jest uruchomiony na tym samym komputerze co baza mysql. Natomiast po uruchomieniu go na innym dostaje taki oto błąd:

    Połączenie z bazą MySQL z innego komputera

    Dane bazy:

    Połączenie z bazą MySQL z innego komputera

    Kod umożliwiający połączenia:

    Połączenie z bazą MySQL z innego komputera

    Co może być przyczyną że program nie chce się połączyć z bazą na innym komputerze tylko wyrzuca błąd ?

    Pozdrawiam
    Przemo_2014
  • #2
    Defice
    Level 25  
    Na dzień dobry nie widzę tu nic ewidentnie zawalonego (może przez zmęczenie) a próbowałeś z trybem debugowania ? Na czym się wykłada ?

    Słowo Database powinno być z dużej litery, ale to chyba nie powód błędu.

    Edit:

    Różne są także wersje MySQL, czy to nie to przypadkiem stwarza problem ?
  • #3
    adamz74
    Level 32  
    Z treści komunikatu wynika jasno, że nie można załadować jednego lub wielu plików. W treści poniżej, z opisem wyjątku, jest mowa o MySql.D... i niestety dalsza treść jest ucięta.

    Zobacz czy masz wszystkie biblioteki i ew.podaj całą treść komunikatu błędu.

    Pozdr!
  • #4
    Przemo_2014
    Level 19  
    Wiec jeśli chodzi o powyżej wyświetlany błąd faktycznie na drugim komputerze brakowało bibliotek do obsługi bazy MySql (mysql-connector-net-6.5.4). Po zainstalowaniu tego pakietu znów dostałem komunikat o błędzie i wydaje mi się że jest to również związane z brakiem jakichś bibliotek. Na komputerze gdzie aplikacja działa bez problemu instalowałem tylko Visual Studio, bazę MySql i ten pakiet do jej obsługi mysql-connector-net-6.5.4.
    Poniżej zamieszczam opis błędu:

    Połączenie z bazą MySQL z innego komputera

    oraz cały opis:

    Code: text
    Log in, to see the code



    Czy braki bibliotek mogą być związane że po napisaniu aplikacji kopiuję na drugi komputer plik bezpośrednio z folderu zaznaczony na poniższym zdjęciu:

    Połączenie z bazą MySQL z innego komputera
  • #5
    marcinj12
    Level 40  
    A przekopiowałeś cały katalog Relase, ze wszystkimi bibliotekami, na ten drugi komputer? I czy kompilujesz program pod .NET 4.0?
    Bo z komunikatu błędu widzę, że wrzuciłeś WindowsFormsApplication1.exe bezpośrednio na dysk E.
    Do prawidłowego działania wszystkie dodatkowe biblioteki linkowane w czasie kompilacji muszą się znajdować albo w Global Assembly Cache (tam trafiło MySql.Data jak instalowałeś tego connectora), albo w katalogu z aplikacją.

    Ewentualnie problemem może być zła wersja tego connectora - nie znam go, ale wyjątek coś wspomina o System.Transaction v.2.0 - czy na pewno pobrałeś wersję dla .NETa 4.0 ?

    Albo zaznaczyłeś w referencji omyłkowo odniesienie do System.Transacions dla .NETa 2.0 - sprawdź w solucji -> References czy nie masz tam zaznaczonej biblioteki SystemTransactions w wersji 2.0.0.0
  • #6
    Przemo_2014
    Level 19  
    Tak cały katalog został skopiowany na drugi komputer wraz z bibliotekami. Na drugim komputerze gdzie jest zainstalowany windows 7 po doinstalowaniu bibliotek net4.0 i mysql-connector-net-6.5.4. program ruszył bez problemu. Niestety komputer ten nie był podłączony do sieci na której ma działać cala aplikacja. Natomiast pod windows xp po zainstalowaniu tych samych pakietów dostałem poniższy komunikat:

    Połączenie z bazą MySQL z innego komputera

    i jego cala zawartość:

    Code: text
    Log in, to see the code



    Próbowałem też czy jest możliwość połączenia się z bazą za pośrednictwem konsoli. Po wpisaniu do konsoli na drugim komputerze:
    mysql -h 192.168.4.144 -u root -p
    dostałem komunikat że powyższe polecenie nie istnieje. Po wpisaniu ping 192.168.4.144 wszystkie pakiety dochodzą bez problemu. Możecie doradzić co sprawdzić w pierwszej kolejności ?

    Dodam jeszcze ze na komputerze gdzie jest zainstalowany mysql nie ma firewalle a system to windows 7.
  • #7
    marcinj12
    Level 40  
    Tym razem dostajesz komunikat, że nie można się połączyć do serwera MySql.
    W ogóle to masz to jako nieobsłużony wyjątek: powinieneś jakoś temu zaradzić, np. umieszczając całość kodu w przycisku button1_add w bloku try-catch, w najbardziej ogólnej wersji:
    Code: csharp
    Log in, to see the code

    To samo dotyczy pozostałych akcji, gdzie potencjalnie może wystąpić jakiś wyjątek.

    A generalnie albo jest problem z nasłuchującym serwerem MySql, albo masz źle skonfigurowanego connection stringa z połączeniem do niego. Wklej go na forum - ze zmienionym adresem i hasłem ;) - to może ktoś zobaczy czy jest OK. Możesz wkleić cały kod dodawania rekordu.
  • Helpful post
    #9
    adamz74
    Level 32  
    Wydaj polecenie "netstat -an"

    W wyniku powinna być linia:
    TCP 0.0.0.0:3306 0.0.0.0:0 LISTENING
  • #10
    Przemo_2014
    Level 19  
    Wpisałem powyższą komendę i linia widnieje w spisie nasłuchiwanych portów. A jak teraz z konsoli na drugim komputerze mogę sprawdzić czy mogę uzyskać połączenie z bazą danych ?

    Tak wygląda kod łączący się i wpisujący dane do bazy:

    Połączenie z bazą MySQL z innego komputera

    W miejsce adres_ip podstawiany jest adres pod jakim komputer na którym jest serwer jest widziany w sieci czyli "192.168.4.144" jako login podaje "root" i do tego hasło. Pod localhostem wszystko działa poprawnie problem pojawia się po przeniesieniu aplikacji na drugi komputer w sieci i w tedy występuje problem z uzyskaniem połączenia.

    Co powinienem jeszcze sprawdzić albo gdzie szukać problemu ?
  • Helpful post
    #11
    marcinj12
    Level 40  
    Ciężko coś dokładniej powiedzieć, przyczyn może być wiele... Możesz jeszcze:
    - Pogrzebać w pliku konfiguracyjnym MySql i sprawdź, czy nie jest wyłączony zdalny dostęp: link . Nie wiem czy nie trzeba tam gdzieś dodać uprawnień do zdalnego łączenia się link
    - Upewnij się, że usługa mysql na serwerze jest uruchomiona, zrestartuj ją.
    - Do testów ściągnij jakiegoś lekkiego klienta MySql na ten zdalny komputer i spróbuj nawiązać połączanie na tych samych parametrach.

    PS. Słyszałeś może o parametrach w zapytaniu?? Ktoś Ci wpisze apostrof w komentarzu i całe zapytanie masz rozwalone (poszukaj przykładów użycia parameters.AddWithValue(...))...