====== MySQL ======
Diese Seite enthält allgemeine Hilfen sowie hilfreiche SQL-Befehle für TYPO3-Tabellen.
===== Terminal-Befehle =====
==== MySQL-Server starten/stoppen/neustarten ====
mysql.server start
mysql.server stop
mysql.server restart
Tritt beim Start von MySQL der Fehler\\
''ERROR! The server quit without updating PID file''\\
auf, müssen die //.err//-Dateien im Ordner ''/usr/local/var/mysql/'' gelöscht werden.
==== SQL-Import über Terminal ====
Wenn die SQL-Datei zu groß für einen Import über phpmyadmin ist. Leere Datenbank muss bereits vorhanden sein.
mysql -u Username -p Datenbankname < beispiel.sql
Bei **Mittwald** und ggf. anderen Anbietern muss noch der Hostname ergänzt werden:
mysql -u Username -p -h db1234.mydbserver.com Datenbankname < beispiel.sql
----
===== SQL-Befehle =====
==== Suchen/Ersetzen von Teilstrings innerhalb einzelner DB-Felder ====
UPDATE tt_content
SET bodytext = REPLACE(bodytext, 'class="old-btn"', 'class="c-btn c-btn--primary"')
WHERE bodytext LIKE ('%class="old-btn"%');
==== RTE Accessibility Icons ersetzen ====
Mit TYPO3 v7 wurden die Barrierefreiheit-Icons für Links im RTE an andere Stelle im Extension-Verzeichnis verschoben, um die Struktur mit dem Rest des TYPO3-Kerns zu vereinheitlichen.
UPDATE tt_content
SET bodytext = REPLACE(bodytext,
'rtehtmlarea/res/accessibilityicons/img/',
'rtehtmlarea/Resources/Public/Images/');
Quelle: [[https://stackoverflow.com/questions/42736166/rtes-accessibilityicons-missing-in-typo3-7-6|Stack Overflow: RTEs accessibilityicons missing in TYPO3 7.6]]
Mit der Aktualisierung auf TYPO3 v8 müssen Pfade möglicherweise erneut angepasst werden, da die Extension //rtehtmlarea// nicht mehr zum TYPO3-Kern gehört und ggf. nachinstalliert werden muss. Statt ''/typo3/sysext/rtehtmlarea/'' lautet der Pfad dann ''/typo3conf/ext/rtehtmlarea/''.
==== Suchen/Ersetzen exakter Werte in Feldern ====
Hilfreich, um z.B. den Wert ''1'' in einem Feld zu finden, nicht aber ''12''.
[[:<:]]Exakter Treffer[[:>:]]
==== Ausgabe aller existierenden Werte eines Feldes ====
**Inkl. Anzahl der Datensätze mit diesem Wert:**
SELECT CType, count(CType)
FROM tt_content WHERE hidden=0 AND deleted=0
GROUP BY CType
ORDER BY count(CType) desc
oder ohne Anzahl:
SELECT DISTINCT(CType) AS CType FROM tt_content ORDER BY CType
==== Alle unterschiedlichen Feldnamen in File-Referenzen, unterschieden nach Tabelle: ====
SELECT distinct tablenames, fieldname, count(*) FROM sys_file_reference
GROUP BY tablenames, fieldname
ORDER BY count(*) desc
==== Suche nach doppelten Einträgen ====
Hier am Beispiel mehrfach importierter Newsbeiträge:
SELECT uid,title,externalurl, COUNT(*)
FROM `tx_news_domain_model_news`
GROUP BY title,externalurl
HAVING COUNT(*) > 1
==== Kopie einer Tabelle anlegen ====
**Inkl. Indizes des Originals:**
CREATE TABLE newtable LIKE oldtable;
INSERT INTO newtable SELECT * FROM oldtable;
**Ohne Indizes:**
CREATE TABLE newtable AS SELECT * FROM oldtable;
==== Inhalte aus Original-Tabelle ohne Duplikate kopieren ====
CREATE TABLE sys_file_reference_new LIKE sys_file_reference;
INSERT INTO sys_file_reference_new
SELECT * FROM
(SELECT * FROM sys_file_reference WHERE deleted=0 GROUP BY uid_local,uid_foreign,sys_language_uid A;