Einträge zu Tag: MySQL
MySQL-Tabelle leeren
Erstellt: 03.01.2011 11:08
Will man eine Tabelle in MySQL erhalten, diese aber komplett leeren, hilft ein kurzer Befehl weiter:
TRUNCATE `table`;
...und schon ist die Tabelle leergefegt. :)
Eine MySQL-Tabelle kopieren
Erstellt: 22.11.2010 10:46
Eine MySQL-Tabelle lässt sich einfach in zwei Schritten kopieren:
Zuerst wird die neue Tabelle (noch leer) erstellt nach dem Vorbild der Alten:
CREATE TABLE `newtable` LIKE `oldtable`;
Danach kann der komplette Inhalt kopiert werden mit:
INSERT INTO `newtable` SELECT * FROM `oldtable`;
MySQL: ERROR 1242 (21000): Subquery returns more than 1 row
Erstellt: 16.10.2010 22:14
Wie diese Errormeldung schon recht gut beschreibt, tritt dieser Fehler auf, wenn der Subquery mehr als ein Ergebnis ausspuckt.
Beispielsweise bei einer Abfrage wie folgender kann dies der Fall sein:
SELECT * FROM tabelle1 WHERE zeile = (SELECT zeile FROM tabelle2);
Liefert der Subquery mehr als eine Zeile als Antwort fügt man dem = einfach noch ein ANY hinzu:
SELECT * FROM tabelle1 WHERE zeile = ANY (SELECT zeile FROM tabelle2);
...und als Antwort bekommt man alle Zeilen auf welche die Bedingung mit allen Antwortzeilen des Subquerys passt.
Anmerkung:
= und LIKE kann man zwar in vielen Fällen gleich benutzen, "LIKE ANY" funktioniert allerdings nicht, es muss "= ANY" verwendet werden.
Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)'
Erstellt: 15.10.2010 22:04
Nach einem "Redumpen" der MySQL-Datenbank kam beim Booten bzw. Starten von MySQL folgender Fehler:
Starting MySQL database server: mysqld ..
Checking for corrupt, not cleanly closed and upgrade needing tables..
/usr/bin/mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)'
Dies geschah, weil ich die Datenbank mit dem Namen "mysql" mit hinein in das Dump nahm mit den Usern.
So war das Passwort von "debian-sys-maint" welches automatisch erzeugt wird bei der Installation nichtmehr mit dem in /etc/mysql/debian.cnf identisch.
Also zuerst das Passwort aus der Datei /etc/mysql/debian.cnf auslesen:
password = PaSsWoRd
Danach das Passwort wieder in die MySQL-Benutzerrechte schreiben:
$ mysql -u root -p
mysql> GRANT ALL PRIVILEGES ON *.* TO `debian-sys-maint`@`localhost` IDENTIFIED BY "PaSsWoRd" WITH GRANT OPTION;
Und nun sollte MySQL wieder erfolgreich starten:
# /etc/init.d/mysql restart
Starting MySQL database server: mysqld ..
Checking for corrupt, not cleanly closed and upgrade needing tables..
MySQLDump über SSH
Erstellt: 13.10.2010 18:14
Auch "mysqldump" lässt sich wie so vieles recht einfach über SSH übertragen:
# mysqldump -uUser -pPassword --opt --lock-tables=false -A | ssh root@192.168.0.123 "cat > /path/to/dump.sql"
root@192.168.0.123's password: Password [Enter]
...und einen Kaffee holen! :D