MySQL: Unterschied zwischen den Versionen

Aus Wikizone
Wechseln zu: Navigation, Suche
 
Zeile 13: Zeile 13:
 
} ENGINE=MyISAM
 
} ENGINE=MyISAM
 
</pre>
 
</pre>
 +
 +
=== 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.

Version vom 12. März 2007, 11:39 Uhr

Informationen zur Datenbank aber auch Tipps zur Bedienung etc.


Codeschnipsel

Typ der Tabellen festlegen

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

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

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:


  1. Read the manual if you want to enable InnoDB!
  2. 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.