15. Juni 2009
If you want to mysql slave to stop replicating from your master db server you might want to start removing all the replication entries from my.conf.
After you have done this you might experience that your server still wants to connect to the master.
In order to stop this, you need to remove a file called master.info.
rm /var/lib/mysql/master.info
After a mysql restart replication should be gone.
Kategorie MySQL | Kommentare deaktiviert
15. Juni 2009
Since most more visitors speak English than German we decided to publish in English from now on. So it’s about the same content but only a different language.
Kategorie Allgemein | Kommentare deaktiviert
18. Mai 2009
Oft hat man in Rails-Anwendungen 1:n Beziehungen und möchte den belongs_to Partner, hier im Beispiel der BillingContact, aus einer Liste betreffender Kandidaten auswählen.
@contacts = BillingContact.all
Oft zu sehen sind Konstrukte wie:
f.select(:billing_contact_id, @contacts.collect{ |ch| [ch.name, ch.id] })
Das funktioniert. Es geht aber auch etwas leichter:
f.collection_select( :billing_contact_id, @contacts, :id, :name )
Natürlich könnten noch weitere Optionen verwendet werden:
f.collection_select( :billing_contact_id, @contacts, :id, :name, :include_blank => true )
Kategorie Ruby on Rails | Kommentare deaktiviert
16. Mai 2009
Dateisysteme, die mit dem Legacy-Mountpoint gekennzeichnet sind, müssen mit den Werkzeugen mount und umount verwaltet werden. Diese Dateisysteme werden also nicht automatisch von ZFS gemountet. Sollen diese Dateisysteme beim Systemstart eingehängt werden, so müssen diese in die Datei /etc/vfstab eingetragen werden.
Die ZFS mount und umount-Befehle können für diese Dateisysteme nicht verwendet werden.
Mehr Informationen über Legacy-Mountpoints finden sich im ZFS Administration Guide.
Kategorie OpenSolaris, ZFS | Kommentare deaktiviert
13. Mai 2009
RubyMine ist eine neue, vielversprechende, im kommerziellen Einsatz leider auch kostenpflichtige, Entwicklungsumgebung für Ruby on Rails.
Als Mac-User kommt man evtl. in die Verlegenheit den Zeichensatz (Encoding) der Text-Dateien ändern zu wollen. Default bei MacOS X ist hier MacRoman. Um das Encoding dann auf UTF-8 umzustellen geht man auf RubyMine | Preferences | General. Im linken Fenster kann man dann bei IDE Encoding den gewünschten Zeichensatz, z.B. UTF-8 auswählen.
Screenshot der Einstellung:

Kategorie RubyMine | Kommentare deaktiviert
9. Mai 2009
Ein interessantes neues Feature in Rails 2.3 ist die scoped_by Methode von ActiveRecord-Objekten.
Stellen wir uns ein einfaches ActiveRecord-Model Page mit den Attributen title und content vor und betrachten folgende Anweisung:
Page.scoped_by_title("a").count
=> 3
Das resultierende SQL zeigt, dass ein COUNT Statement verwendet wurde, d.h. die Generierung des SQLs erfolgt nicht nach dem Aufruf von scoped_by, sondern nach dem Count.
SELECT count(*) AS count_all FROM `pages` WHERE (`pages`.`title` = 'a')
Ein ähnliches Ergebnis hätte etwa folgende Anweisung geliefert:
Page.count(:conditions => "title = 'a'")
Auf keinen Fall aber sollte man so etwas tun:
Page.find(:all, :conditions => "title = 'a'").size
Es wird zwar ebenso 3 zurückgeliefert, jedoch ist das SQL-Statement ein völlig anderes:
SELECT * FROM `pages` WHERE (title = 'a')
Hier werden also sämtliche Datensätze der Tabelle abgefragt und weiterverarbeitet. Bei sehr großen Datenmengen hat man sich so einen 1A Speicherfresser erstellt.
Ein kurzer Tipp an Rails-Einsteiger:
Es ist für die Erstellung einer Anwendung unerläßlich den resultierenden SQL-Code anzusehen. Nur so kann evtl. Schwachstellen der Anwendung bereits frühzeitig erkennen und vermeiden. ActiveRecord hilft zwar an vielen Stellen, es ist jedoch sicherlich kein Ersatz für fundierte SQL Kenntnisse.
Kategorie ActiveRecord, Ruby on Rails | Kommentare deaktiviert
5. Mai 2009
Eine Fehlermeldung wie diese:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/opt/local/var/run/mysql5/mysqld.sock' (2)
hat wohl jeder schonmal gesehen. In diesem Fall sind auf dem Rechner mehrere MySQL Versionen installiert und natürlich wird die versucht die falsche Version anzusprechen. Nach der Installation des MySQL OS X DMGs geht nun also die Suche los, wo das PID-File des MySQL Dienstes liegt.
Die Lösung ist einfach. Um das PID-File des MySQL Servers zu finden geht man wie folgt vor:
$ mysql
mysql> status
--------------
/usr/local/mysql/bin/mysql Ver 14.14 Distrib 5.1.34
Connection id: 415
Current database:
Current user: dbuser@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 5.1.34 MySQL Community Server (GPL)
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: latin1
Db characterset: latin1
Client characterset: latin1
Conn. characterset: latin1
UNIX socket: /tmp/mysql.sock
Uptime: 21 min 1 sec
--------------
Kategorie MySQL | Kommentare deaktiviert
24. April 2009
Beim Versuch sich von außen auf einen MySQL-Server zu verbinden begnet man zu weilen folgender Fehlermeldung:
#2013 - Lost connection to MySQL server at 'reading initial communication packet', system error: 61
Nach der Aktivierung des Großhirns und einem Studium der Konfigurationsdatei ergibt die Lösung des Problems durch folgende Änderung in
/etc/mysql/my.cnf
Im Abschnitt [mysqld] darf die bind-adress Einstellung nicht localhost bzw. 127.0.0.1.
bind-address = 0.0.0.0
Mit 0.0.0.0 bindet sich der MySQL-Server an jede verfügbare IP des Systems. Um dies restriktiver zu halten, kann auch die IP des jeweiligen Interface verwendet werden.
Kategorie MySQL | Kommentare deaktiviert
18. April 2009
Der Fehler könnte wie folgt aussehen:
postfix: fatal: libcrypto.so.0.9.7: open failed: No such file or directory
Nun, die Datei ist da aber wo sucht nun die Anwendung danach?
Der Befehl ldd hilft die Antwort auf diese Frage zu finden:
root@myserver:/opt# ldd /usr/sbin/postfix
libssl.so.0.9.7 => (file not found)
libcrypto.so.0.9.7 => (file not found)
libldap.so.5 => /usr/lib/libldap.so.5
libresolv.so.2 => /usr/lib/libresolv.so.2
libsocket.so.1 => /usr/lib/libsocket.so.1
libnsl.so.1 => /usr/lib/libnsl.so.1
libc.so.1 => /usr/lib/libc.so.1
libsasl.so.1 => /usr/lib/libsasl.so.1
libmd.so.1 => /lib/libmd.so.1
libnspr4.so => /usr/lib/mps/libnspr4.so
libplc4.so => /usr/lib/mps/libplc4.so
libnss3.so => /usr/lib/mps/libnss3.so
libssl3.so => /usr/lib/mps/libssl3.so
libmp.so.2 => /lib/libmp.so.2
libscf.so.1 => /lib/libscf.so.1
libpthread.so.1 => /lib/libpthread.so.1
libthread.so.1 => /lib/libthread.so.1
librt.so.1 => /lib/librt.so.1
libdl.so.1 => /lib/libdl.so.1
libsoftokn3.so => /usr/lib/mps/libsoftokn3.so
libplds4.so => /usr/lib/mps/libplds4.so
libuutil.so.1 => /lib/libuutil.so.1
libgen.so.1 => /lib/libgen.so.1
libbsm.so.1 => /lib/libbsm.so.1
libsecdb.so.1 => /lib/libsecdb.so.1
libtsol.so.2 => /lib/libtsol.so.2
libinetutil.so.1 => /lib/libinetutil.so.1
libm.so.2 => /lib/libm.so.2
So oder so ähnlich könnte die Ausgabe von ldd aussehen. Nun kann man prüfen, ob die entsprechenden Dateien vorhanden sind und ggf. passende Symlinks anlegen.
Kategorie Linux, OpenSolaris | Kommentare deaktiviert
16. April 2009
Eine erfolgreiche Installation des MySQL-Gems unter OpenSolaris erfolgt über das folgende Kommando:
gem install mysql -- --with-mysql-dir=/usr/mysql/5.0/
So können auch Ruby on Rails Anwendungen neuerer Generation erfolgreich unter OpenSolaris betrieben werden.
Kategorie Allgemein | Kommentare deaktiviert