MySQL
Informationen zur Datenbank aber auch Tipps zur Bedienung etc.
Siehe auch MariaDB
mySQL - Tips und Tricks[Bearbeiten]
mySQL - Cheat Sheet[Bearbeiten]
mySQL auf der Kommandozeile[Bearbeiten]
Codeschnipsel[Bearbeiten]
Typ der Tabellen festlegen[Bearbeiten]
CREATE TABLE `foo` {
...
} ENGINE=InnoDB
CREATE TABLE `bar` {
...
} ENGINE=MyISAM
Typo aller Tabellen auf einmal ändern[Bearbeiten]
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[Bearbeiten]
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[Bearbeiten]
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[Bearbeiten]
MySQL - Daten importieren und exportieren
MySQL Passwort zurücksetzen[Bearbeiten]
http://localhost/dashboard/docs/reset-mysql-password.html http://dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html