MySQL: InnoDB-Engine nicht verfügbar

  • Blog, Code

Die InnoDB-Engine für MySQL bietet gegenüber MyISAM einige Vorteile wie Transactions, feineres Locking und harte Fremdschlüsselbeziehungen.
Deshalb setzen wir InnoDB gerne für unsere Projekte ein, beispielsweise für Webapplikationen auf Basis von CakePHP.

Es kann das Problem auftreten, dass sich in einer Datenbank nur MyISAM-Tabellen anlegen lassen, aber keine InnoDB-basierten. Prüft man die verfügbaren Engines im mysql-Prompt mit dem Befehl SHOW ENGINE;, dann erhält man in etwa folgende Ausgabe:

show-engines

Weiterlesen »MySQL: InnoDB-Engine nicht verfügbar

Git Commit-Autor setzen

  • Blog, Code

Bei unseren Projekten nutzen wir gerne Git als Werkzeug, um unsere Codebasis zu versionieren und gemeinsam daran zu entwickeln.

Es gibt aber auch Fälle, in denen Git bei uns ausschließlich zur Versionierung dient, zum Beispiel für Server-Konfigurationen. Damit können wir bei Problemen, die durch Änderungen hervorgerufen wurden, schnell auf vorherige Stände zurückschalten. Das hilft uns Ausfallzeiten zu minimieren, denn so ist nicht unbedingt das Einspielen eines vollständigen Backups nötig.

Für ein solches Git-Repository bietet es sich an, Commits direkt auf dem Server zu machen. Allerdings führt das dazu, dass jeder Entwickler unter dem gleichen Autor Commits erstellt (solange sich alle den gleichen Linux-User teilen). Solche Commits sind später schlecht nachzuverfolgen. Angenehmerweise bietet Git hierfür Abhilfe.Weiterlesen »Git Commit-Autor setzen

CakePHP: Fehlende Strings bei i18n extract (Übersetzung)

  • Blog, Code

CakePHP bietet die Möglichkeit Anwendungen mit überschaubarem Aufwand zu übersetzen, indem man sich .pot-Dateien generieren lässt. Diese lassen sich dann mit Standardwerkzeugen wie PoEdit verwenden, um die .po-Dateien mit den jeweiligen Übersetzungen zu erzeugen.

Um alle verwendeten Zeichenketten innerhalb eines Projektes in die entsprechenden .pot-Dateien zu bringen, bietet CakePHP eine eigene Shell an, die sich wie folgt aus dem app-Verzeichnis heraus aufrufen lässt:

Weiterlesen »CakePHP: Fehlende Strings bei i18n extract (Übersetzung)

Mysql Datenbank Backup via mysqldump ohne Root Passwort

Datenbank-Backups gehören zum täglich Brot eines Systemadministrators. Gerne werden hierfür kleine Shell-Skripte auf Basis von mysqldump gebastelt, die via Cronjob angestoßen werden.

Leider finden sich in der Praxis immer wieder Skripte folgender Art:

#!/bin/bash
/usr/bin/mysqldump -uroot -pSecretPassword mydatabase > backup`date +%Y-%m-%d`.sql

Nicht nur unnötig, sondern auch ein Sicherheitsrisiko stellt hier die Verwendung des Root-Users dar.

Weiterlesen »Mysql Datenbank Backup via mysqldump ohne Root Passwort

Reihenfolge der Interfaces in resolv.conf ändern

  • Blog, Code

In unserem Netzwerk gibt es aus verschiedenen Gründen Server, die über zwei oder mehr Netzwerkschnittstellen kommunizieren. Dabei kann es wichtig sein, die Reihenfolge festzulegen, in der die Namensauflösung über resolvconf geschieht, um sicherzustellen, dass die Adressen in verschiedenen Netzen wie gewünscht aufgelöst werden.

Nach der Installation des Paketes resolvconf über die Paketverwaltung kann die Grundeinstellung über dpkg-reconfigure resolvconf vorgenommen werden.

Weiterlesen »Reihenfolge der Interfaces in resolv.conf ändern

XEN und “RTNETLINK answers: File exists”

In einer XEN-basierten Infrastruktur lässt sich im XenCenter unkompliziert einer VM eine weitere Netzwerkschnittstelle hinzufügen. Überlicherweise funktioniert das sogar ohne die Maschine herunterzufahren (“Hot-Plugging”). Leider ist das nicht immer der Fall und kann Fehlermeldungen auslösen, die nicht direkt auf das Problem hinweisen, z.B.

$ ifup eth1
RTNETLINK answers: File exists
Failed to bring up eth1.

Die Lösung ist einfach, wenn die Maschine nicht ununterbrochen am Netz bleiben muss:

Weiterlesen »XEN und “RTNETLINK answers: File exists”