andreas michael thul
Musik & Technik

Schlagwort: MySQL

Groß- und Kleinschreibung von MySQL-Tabellennamen

Eine “schöne” Stolperfalle, wenn Projekte aus einer Windows- in eine Unix-Umgebung geschoben werden, sind die Tabellennamen in MySQL. Egal, ob die Tabelle unter dem Namen “Kosten”, “kosten” oder “Kosten” angelegt wurde, unter Windows ignoriert ein Statement wie

SELECT * FROM kOsTeN;

jegliche Groß- und Kleinschreibung und liefert die selektierten Zeilen, während MySQL unter Unix in einen Fehler läuft.

 

Groß- und Kleinschreibung bei SQLite

Eine der Stolperfallen beim Wechsel zwischen MySQL und SQLite ist, daß SQLite in der Standardeinstellung z.B. bei SELECT-Statements zwischen Groß- und Kleinschreibung unterscheidet. Ein

SELECT * FROM meinetabelle WHERE meinfeld = 'test';

wird zwar eine Zeile mit meinfeld = ‘test’ finden, für eine vorhandene Zeile mit meinfeld = ‘Test’ aber kein Ergebnis zurückliefern. Möchte man das SELECT ohne Berücksichtigung von Groß – und Kleinschreibung durchführen, so kann dies durch das Anhängen von ‘COLLATE NOCASE’ erfolgen, also

SELECT * FROM meinetabelle WHERE meinfeld = 'test' COLLATE NOCASE;

womit auch ‘Test’, ‘tEst’, ‘TEST’ und noch ein paar andere Schreibweisen gefunden werden.

 

MySQL-Tabellen nach Crash reparieren

Sollte sich MySQL mit einem Fehler wie

Table '<Tabellenname>' is marked as crashed and should be repaired

zu Wort melden, so hilft in der Regel ein

mysql> check table <Tabellenname>;

mysql> repair table <Tabellenname>;

damit die Welt wieder in Ordnung ist:

+----------------+-------+----------+----------+
| Table          | Op    | Msg_type | Msg_text |
+----------------+-------+----------+----------+
| <Tabellenname> | check | status   | OK       |
+----------------+-------+----------+----------+
1 row in set (0.01 sec)
 

Schnelle Übersicht in MySQL

Manchmal sind es die einfachen Dinge, die man immer wieder nachschlagen muß …

Eine Liste der Datenbanken eines MySQL-Servers spuckt der Befehl

SHOW DATABASES;

aus, währen die vorhandenen Tabellen einer Datenbank mit dem Befehl

SHOW TABLES IN <datenbankname>;

ermittelt werden können. Wahlweise kann an letzteren auch noch eine LIKE-Bedingung angehängt werden.

 

MySQL AUTOINCREMENT nachjustieren

Ab und an kann es passieren, daß sich MySQL beim AUTOINCREMENT verschluckt und versucht, einen Wert anzulegen, der bereits existiert.

Zur Fehlerbehebung gilt es, den aktuellen AUTOINCREMENT-Wert zu ermitteln, der nach dem Ausführen von

mysql> SHOW TABLE STATUS FROM <datenbank> WHERE Name = '<tabelle>';

in der Spalte ‘Auto_increment’ zu finden ist. Anschließend kann mittels

mysql> ALTER TABLE <tabelle> AUTO_INCREMENT = <wert>;

ein neuer Startwert gesetzt werden.