Wpisy otagowane ‘MySQL’

PHP i transakcje w MySQL

środa, 16 Maj 2012

Nie jestem programistą, ani Programistą PHP. Czasem robię code review lub piszę protezę dla jakichś systemów.
Po ostatnim przeglądzie uważam, że warto wspomnieć o prostych sposobach na transakcje w (My)SQL.

Jeśli mamy do dyspozycji PDO (PHP Data Objects) i PHP >= 5.1 (ew. 5.0 i PDO jako PECL), to możemy użyć gotowych mechanizmów do obsługi transakcji i wyjątków (od PHP 5.0):

try {
  $dbh->beginTransaction();
  $dbh->exec('pierwsze zapytanie');
  $dbh->exec('drugie zapytanie');
  $dbh->exec('trzecie zapytanie');
  $dbh->commit();
} catch (Exception $e) {
  $dbh->rollBack();
  echo $e->getMessage();
}

(więcej…)

Bacula i własne zestawienia

wtorek, 28 Czerwiec 2011

Bacula oprócz gotowych zestawień informacji (wyświetlanych przy pomocy komend np. status czy list) umożliwia tworzenie własnych, możliwych do wykorzystania w raportach czy po prostu pomocnych przy codziennej pracy. Z racji tego, że wszystkie dane przechowywane są w bazie SQL (MySQL lub PostgreSQL) można to zrobić dowolnym klientem (np. Orbada :>). Można też przygotować zapytania i wywoływać je z poziomu bconsole – daje to pewną „interaktywność”.

Sam napisałem własne i dopisuję na potrzeby chwili kolejne zapytania. (więcej…)

jdbc:mysql i data

czwartek, 16 Czerwiec 2011

Orbada
Od jakiegoś czasu jestem (szczęśliwym) użytkownikiem Orbada – narzędzia do administracji i zarządzania bazą danych. Podczas wyświetlania dat, które są zerowe (np. ustawione domyślnie na ’0000-00-00 00:00:00′) zwraca takie błędy:

java.sql.SQLException: Cannot convert value '0000-00-00 00:00:00' from column 11 to TIMESTAMP.
Caused by: java.sql.SQLException: Value '[B@13ad88b' can not be represented as java.sql.Timestamp

Nie jest to oczywiście błąd Orbada, a sterownika JDBC, z którego program korzysta przy połączeniach. Obejście to zmodyfikowanie connection string poprzed dodanie zeroDateTimeBehavior=convertToNull.


Nie reklamuję Orbada tylko dlatego, że Andrzej to mój kolega z pracy – to naprawdę dobry program. Spróbujcie sami, polećcie innym i wspomóżcie projekt (za niedługo będą nawet ładne koszulki z logo).

FortiAnalyzer i MySQL

piątek, 9 Kwiecień 2010

W dokumencie FortiAnalyzer v4.0 MR2 Release Notes w rozdziale ’1.1 Summary of Enhancements Provided by FortiAnalyzer v4.0 MR2 Release’ można znaleźć między innymi coś takiego:

  • Remote SQL database (MySQL) support
  • SQL DB PostgreSQL support

Przyznam, że zaintrygowało mnie to na tyle, że postanowiłem od razu sprawdzić z czym to się je i co można z tego wycisnąć.
(więcej…)

MySQL: konwersja daty i import plików – studium przypadku

środa, 13 Styczeń 2010

Niniejszy wpis powstał przy rozwiązywaniu konkretnego problemu. Jest tu opis polecenia LOAD DATA INFILE (import danych z pliku) oraz sposób wykonania konwersji daty podczas importu danych, co może komuś się przydać (niekoniecznie przy walce z takim samym problemem).
(więcej…)

Trochę Lua w mysql-proxy

poniedziałek, 2 Listopad 2009

Replikacja baz MySQL działa jako tako. Jeśli to typ MASTER – SLAVE, to na ogół ten drugi serwer się nudzi. Skoro się nudzi, można wykorzystać go do zapytań, które nie zmieniają niczego (SELECT). Jeśli oddamy go w takim stanie programiście, to pewne jest, że prędzej czy później będzie to jego serwer testowy i dziać się będą na nim różne rzeczy.
(więcej…)

nagios: check_mysql-replication.pl

czwartek, 22 Październik 2009

Do monitorowania replikacji MySQL pod Nagios postanowiłem użyć wtyczki mysql_check-replication.pl, ktrej autorem jest Erwan Labynocle Ben Souiden. Instrukcja mówi o nadaniu prawa REPLICATION CLIENT użytkownikowi, który łączył się będzie z bazą. Sam skrypt napisany jest w Perl, gdzie w DSN podana jest baza, do której użytkownik będzie się podłączał. Wspomniane prawa dają tylko możliwość wywołania SHOW MASTER STATUS oraz SHOW SLAVE STATUS i nie dają praw do żadnej bazy. Tym samym skrypt się nie wykona.

Proponuję (wersja 0.1) przerobić DSN (linia 298) i wyrzucić nazwę bazy zupełnie (pozostawić `:’ – dwukropek) lub zmienić nazwę na information_schema, bo do tego prawo ma każdy użytkownik (dla wersji > 5.0).

--- /usr/lib64/nagios/plugins/check_mysql-replication.pl 2009-10-22 13:17:26.000000000 +0200
+++ check_mysql-replication.pl 2009-10-22 13:17:33.000000000 +0200
@@ -295,7 +295,7 @@ EOT
# ------------------------------
sub request_executor() {
my ($host,$port,$user,$pwd,$request) = @_;
- my $dsn = "DBI:mysql:mysql;host=$host:$port";
+ my $dsn = "DBI:mysql:;host=$host:$port";
my $dbh = DBI->connect($dsn, $user, $pwd) or die "connexion failed $DBI::errstr\n";
my $sth = $dbh->prepare($request);
$sth->execute();

Autor obiecał, że wprowadzi stosowną poprawkę – tymczasem można łatać.