MySQL

Aus Wikizone
Wechseln zu: Navigation, Suche

Informationen zur Datenbank aber auch Tipps zur Bedienung etc.

mySQL - Tips und Tricks

mySQL - Tips und Tricks


mySQL - Cheat Sheet

mySQL - Cheat Sheet

mySQL auf der Kommandozeile

mySQL - Kommandozeile

Codeschnipsel

Typ der Tabellen festlegen

CREATE TABLE `foo` {
...
} ENGINE=InnoDB

CREATE TABLE `bar` {
...
} ENGINE=MyISAM

Typo aller Tabellen auf einmal ändern

Folgendes SQL-Statement erzeugt uns die notwendigen SQL-Kommandos um alle Tabellen in der Datenbank „amel“ auf InnoDB umzustellen, die derzeit noch MyISAM sind:

SELECT CONCAT('ALTER TABLE `',table_schema,'`.`',
table_name,'` engine=MyISAM;')
FROM information_schema.tables
WHERE engine = 'InnoDB' AND table_schema = 'amel';

Dann die erzeugten Statements aus der Druckansicht holen

InnoDB aktivieren

Zitat aus http://www.marmotli.ch/mysql/node35.html

5.2.1 Aktivieren der InnoDB-Tabellen

Das Arbeiten mit dem Tabellentyp 'InnoDB' setzt voraus, dass der MySQL-Server mit diesem Tabellentyp hochgefahren wird.

Unter Debian 3.0 d.h. falls wir MySQL gemäss dieser Anleitung aufgesetzt haben, steht der InnoDB-Tabellentyp zunächst nicht zur Verfügung. Nicht weil MySQL 4.0.13 das nicht unterstützen würde, sondern weil wir die my.cnf-Datei von der Version 3.23.x übernommen haben und das dort nicht aktiviert war. Um die InnoDB-Tabellen nun zu aktivieren, müssen wir einige Änderungen in der Datei '/etc/mysql/my.cnf' vornehmen:


# Read the manual if you want to enable InnoDB!
# skip-innodb
innodb_data_home_dir =
innodb_data_file_path = /var/lib/mysql/ibdata/ibdata1:100M:autoextend


Zunächst muss 'skip-innodb' deaktiviert werden. Danach müssen wir den Speicherort für die Tabellen angeben. Falls wir 'innodb_data_home_dir' leer belassen, verwendet MySQL den normalen Datenpfad der Datenbanken. Dort werden einige Temporär-Dateien erstellt. Den Speicherort für die InnoDB-Tabellen legen wir mit dem Wert 'innodb_data_file_path' fest. Wir verwenden wiederum den Speicherort für die MySQL-Datenbanken sowie das Unterverzeichnis 'ibdata'. Dieses Verzeichnis muss von Hand angelegt werden:


mkdir /var/lib/mysql/ibdata
chown -R mysql /var/lib/mysql/ibdata
chgrp -R mysql /var/lib/mysql/ibdata


Um die InnoDB-Tabellen endgültig nutzen zu können, müssen wir den MySQL-Server neu initialisieren:


/etc/init.d/mysql restart


Der Neustart dauert einige Sekunden, weil die InnoDB-Tabellen zunächst initialisiert werden müssen. Um zu überprüfen, ob die InnoDB-Tabellen nun aktiviert sind, können wir in '/var/lib/mysql/ibdata' nachsehen. Falls Sie dort eine Datei vorfinden, ist alles ok.

Werte aus Komma getrennter Liste auswerten

Vor allem im Zusammenhang mit Typo3 Datenbanken kommt es oft dazu, daß man integer Werte in Komma-separierten Listen in einem Datenbank vorfindet. Auf diese Weise erzeugt Typo3 in der Standardeinstellung n:m Verknüpfungen (aber auch 1 : n Verknüpfungen).

Beim Auslesen ist das aber eher nachteilig. Eine geschicktere Methode als IN ab mysql 4 (meines Wissens) ist der Befehl FIND_IN_SET.

Die IN - Abfrage ist nur für Ganze Feldlängen zutreffend, also '1','2','3','4','5',usw, ...

Bei der Funktion FIND_IN_SET sucht MySQL in einer bestimmten Zeile und gibt die Stelle zurück an der der Wert in der LISTE steht.

FIND_IN_SET(WERT,LISTE)

In Typo3 gibts auch die Methode:

AND '.$GLOBALS['TYPO3_DB']->listQuery('feldname',5,'tabellenname').' 

Die aber ein kompliziertes und wenig Performantes SQL Konstrukt erzeugt.

Vielleicht wird die Funktion ja noch umgebaut ;-)

MySQL - Daten importieren und exportieren

MySQL - Daten importieren und exportieren

MySQL Passwort zurücksetzen

http://localhost/dashboard/docs/reset-mysql-password.html http://dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html