Thread View: pl.comp.lang.python
5 messages
5 total messages
Started by aras
Sat, 20 Feb 2010 16:01
MySQLdb - dziwaczny bład
Author: aras
Date: Sat, 20 Feb 2010 16:01
Date: Sat, 20 Feb 2010 16:01
26 lines
1913 bytes
1913 bytes
Witam,
Prościutki skrypt, który nagle przestał działać:
import MySQLdb
>>> def zapisz(zapytanie):
... db=MySQLdb.connect("127.0.0.1","login","haslo","baza")
... c=db.cursor()
... wynik=c.execute(zapytanie)
... return wynik
Problem w tym, że select działa prawidłowo, natomiast insertem nic nie
moge wstawić. Metoda nie wywala żadnego wyjątku, wygląda jakby wszystko
było OK, zmienna 'wynik' ma wartosc 1, że niby zapytanie zostało
wykonane poprawnie ale w bazie zero efektu działania inserta - żadnych
danych wstawianych z posiomu skryptu.
Podejrzwałem, że coś sie schrzaniło po stronie pythona, więc ten sam
skrypt odpaliłem na innej maszynie podając w nim odpowiedni adres tego
samego serwera bazodanowego. Niestety skutek ten sam, a więc przestałem
podejrzewać pythona.
Rzecz w tym, że logując się jakimkolwiek klientem do tegoż MySQLa
wszystko działa jak trzeba, a więc również serwer bazodanowy musze
wykluczyć jako winowajcę.
No i szczerze mówiąc nie mam pomysłu na rozwiązanie problemu... nie
bardzo wiem nawet gdzie szukać. Dodam, że wcześniej wszystko działało
jak trzeba, spieprzyło się nagle... samo :P
Re: MySQLdb - dziwaczny bład
Author: Rob Wolfe
Date: Sat, 20 Feb 2010 16:42
Date: Sat, 20 Feb 2010 16:42
40 lines
2383 bytes
2383 bytes
aras <aras@nospam.pl> writes:
> Witam,
> Prościutki skrypt, który nagle przestał działać:
>
> import MySQLdb
>>>> def zapisz(zapytanie):
> ... db=MySQLdb.connect("127.0.0.1","login","haslo","baza")
> ... c=db.cursor()
> ... wynik=c.execute(zapytanie)
> ... return wynik
>
> Problem w tym, że select działa prawidłowo, natomiast insertem nic nie
> moge wstawić. Metoda nie wywala żadnego wyjątku, wygląda jakby
> wszystko było OK, zmienna 'wynik' ma wartosc 1, że niby zapytanie
> zostało wykonane poprawnie ale w bazie zero efektu działania inserta -
> żadnych danych wstawianych z posiomu skryptu.
> Podejrzwałem, że coś sie schrzaniło po stronie pythona, więc ten sam
> skrypt odpaliłem na innej maszynie podając w nim odpowiedni adres tego
> samego serwera bazodanowego. Niestety skutek ten sam, a więc
> przestałem podejrzewać pythona.
Czyżby jakiś mały upgrade MySQLdb?
$ python -c "import MySQLdb; print MySQLdb.__version__"
1.2.2
> Rzecz w tym, że logując się jakimkolwiek klientem do tegoż MySQLa
> wszystko działa jak trzeba, a więc również serwer bazodanowy musze
> wykluczyć jako winowajcę.
>
> No i szczerze mówiąc nie mam pomysłu na rozwiązanie problemu... nie
> bardzo wiem nawet gdzie szukać. Dodam, że wcześniej wszystko działało
> jak trzeba, spieprzyło się nagle... samo :P
W takich przypadkach najlepiej zacząć od FAQ:
http://mysql-python.sourceforge.net/FAQ.html
Polecam punkt o wiele mówiącym tytule "My data disappeared!". ;)
RW
Re: MySQLdb - dziwaczny bład
Author: Adam Przybyla
Date: Sat, 20 Feb 2010 18:17
Date: Sat, 20 Feb 2010 18:17
30 lines
2307 bytes
2307 bytes
aras <aras@nospam.pl> wrote:
> Witam,
> Prościutki skrypt, który nagle przestał działać:
>
> import MySQLdb
> >>> def zapisz(zapytanie):
> ... db=MySQLdb.connect("127.0.0.1","login","haslo","baza")
> ... c=db.cursor()
> ... wynik=c.execute(zapytanie)
> ... return wynik
>
> Problem w tym, że select działa prawidłowo, natomiast insertem nic nie
> moge wstawić. Metoda nie wywala żadnego wyjątku, wygląda jakby wszystko
> było OK, zmienna 'wynik' ma wartosc 1, że niby zapytanie zostało
> wykonane poprawnie ale w bazie zero efektu działania inserta - żadnych
> danych wstawianych z posiomu skryptu.
> Podejrzwałem, że coś sie schrzaniło po stronie pythona, więc ten sam
> skrypt odpaliłem na innej maszynie podając w nim odpowiedni adres tego
> samego serwera bazodanowego. Niestety skutek ten sam, a więc przestałem
> podejrzewać pythona.
> Rzecz w tym, że logując się jakimkolwiek klientem do tegoż MySQLa
> wszystko działa jak trzeba, a więc również serwer bazodanowy musze
> wykluczyć jako winowajcę.
>
> No i szczerze mówiąc nie mam pomysłu na rozwiązanie problemu... nie
> bardzo wiem nawet gdzie szukać. Dodam, że wcześniej wszystko działało
> jak trzeba, spieprzyło się nagle... samo :P
... a moze ktso ci namieszal w uprawnianiach na serwerze? Potrafisz
ten insert zrobic z konsoli i przy tych samych uprawnianiach? Z powazaniem
Adam Przybyla
Re: MySQLdb - dziwaczny bład
Author: Daniel Mróz
Date: Sun, 21 Feb 2010 00:38
Date: Sun, 21 Feb 2010 00:38
33 lines
2382 bytes
2382 bytes
On 20.02.2010, aras <aras@nospam.pl> wrote:
> Problem w tym, że select działa prawidłowo, natomiast insertem nic nie
> moge wstawić. Metoda nie wywala żadnego wyjątku, wygląda jakby wszystko
> było OK, zmienna 'wynik' ma wartosc 1, że niby zapytanie zostało
> wykonane poprawnie ale w bazie zero efektu działania inserta - żadnych
> danych wstawianych z posiomu skryptu.
cursor.execute("""COMMIT""")
> Podejrzwałem, że coś sie schrzaniło po stronie pythona, więc ten sam
> skrypt odpaliłem na innej maszynie podając w nim odpowiedni adres tego
> samego serwera bazodanowego. Niestety skutek ten sam, a więc przestałem
> podejrzewać pythona.
> Rzecz w tym, że logując się jakimkolwiek klientem do tegoż MySQLa
> wszystko działa jak trzeba, a więc również serwer bazodanowy musze
> wykluczyć jako winowajcę.
Stawiam na brak autocommit.
> No i szczerze mówiąc nie mam pomysłu na rozwiązanie problemu... nie
> bardzo wiem nawet gdzie szukać. Dodam, że wcześniej wszystko działało
> jak trzeba, spieprzyło się nagle... samo :P
Sprawdź czy po COMMIT dane zostaną zapisane. Jeśli tak, zobacz co
zostało zmienione, co mogło mieć wpływ na domyślne ustawienie
wartości autocommit.
Pozdrawiam
Beorn
--
Daniel 'Beorn' Mróz <beorn@alpha.pl> http://127.0.0.1/beorn
[GIT d s:- a-@ C++++ UL++++$ P+ L++++ E--- W+ N+++ o? K- w---]
[O- M- V! PS+ PE++ Y+ PGP++ t- 5 X R !tv b+ DI D++ G++ e h*]
[ r++ y+ ]
Re: MySQLdb - dziwaczny bład
Author: aras
Date: Tue, 23 Feb 2010 18:36
Date: Tue, 23 Feb 2010 18:36
48 lines
3088 bytes
3088 bytes
Daniel Mróz pisze:
> On 20.02.2010, aras <aras@nospam.pl> wrote:
>> Problem w tym, że select działa prawidłowo, natomiast insertem nic nie
>> moge wstawić. Metoda nie wywala żadnego wyjątku, wygląda jakby wszystko
>> było OK, zmienna 'wynik' ma wartosc 1, że niby zapytanie zostało
>> wykonane poprawnie ale w bazie zero efektu działania inserta - żadnych
>> danych wstawianych z posiomu skryptu.
> cursor.execute("""COMMIT""")
>
>> Podejrzwałem, że coś sie schrzaniło po stronie pythona, więc ten sam
>> skrypt odpaliłem na innej maszynie podając w nim odpowiedni adres tego
>> samego serwera bazodanowego. Niestety skutek ten sam, a więc przestałem
>> podejrzewać pythona.
>> Rzecz w tym, że logując się jakimkolwiek klientem do tegoż MySQLa
>> wszystko działa jak trzeba, a więc również serwer bazodanowy musze
>> wykluczyć jako winowajcę.
> Stawiam na brak autocommit.
>
>> No i szczerze mówiąc nie mam pomysłu na rozwiązanie problemu... nie
>> bardzo wiem nawet gdzie szukać. Dodam, że wcześniej wszystko działało
>> jak trzeba, spieprzyło się nagle... samo :P
> Sprawdź czy po COMMIT dane zostaną zapisane. Jeśli tak, zobacz co
> zostało zmienione, co mogło mieć wpływ na domyślne ustawienie
> wartości autocommit.
>
>
> Pozdrawiam
> Beorn
>
COMMITa powinienem chyba wykluczyć jeśli jechałem na MyISAM (?)
Tak czy inaczej zaczęło działać. Reinstalka MySQLa + grzebanina w
ustawieniach na chybił/trafił pomogła :D Sam nie wiem co było nie tak,
ale w końcu ruszyło.
Koledze Adamowi odpowiadam:
To nie sprawa uprawnień. Jestem jedyną osobą mającą dostęp do maszynki,
do konta roota, więc to nie uprawnienia. Inserty z dowolnego klienta
(również tego spod konsoli) działały jak należy. Dałem nawet tcpdumpa,
żeby podsłuchać czy przypadkiem te klienty nie dają COMMIT na końcu (tak
na wszelki wypadek) - nie dawały, więc to też nie to.
Wogóle zdałem sobie sprawę, że to NTG po tym, jak moja aplikacja w javie
korzystająca z tej samej bazy również przestała zapisywać. Odczyt -
spoko, ale jakiekolwiek modyfikacje nie zostały zachowywane.
Tak czy inaczej dzieki :)
pozdrawiam
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads