MySQL: Unterschied zwischen den Versionen

Aus Wikizone
Wechseln zu: Navigation, Suche
 
Zeile 1: Zeile 1:
 
Informationen zur Datenbank aber auch Tipps zur Bedienung etc.
 
Informationen zur Datenbank aber auch Tipps zur Bedienung etc.
 +
 +
Siehe auch [[MariaDB]]
 
== mySQL - Tips und Tricks ==
 
== mySQL - Tips und Tricks ==
 
[[mySQL - Tips und Tricks]]
 
[[mySQL - Tips und Tricks]]

Aktuelle Version vom 27. Oktober 2017, 14:11 Uhr

Informationen zur Datenbank aber auch Tipps zur Bedienung etc.

Siehe auch MariaDB

mySQL - Tips und Tricks[Bearbeiten]

mySQL - Tips und Tricks


mySQL - Cheat Sheet[Bearbeiten]

mySQL - Cheat Sheet

mySQL auf der Kommandozeile[Bearbeiten]

mySQL - Kommandozeile

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