====== 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;