MySQL: Zeilen mit doppelten Werten löschen
Jahrelang habe ich mir bei Tabellen mit doppelten Werten (das heißt, Tabellen, bei denen vergessen worden war, einen UNIQUE Index zu setzen) Hilfs-Skripte verwenden müssen, um die doppelten Datensätze ausfindig zu machen und zu löschen. Ab heute nicht mehr.
Mit dem folgenden Statement lassen sich alle doppelten Datensätze löschen; gleichzeitig wird der fehlende UNIQUE hinzugefügt:
ALTER IGNORE TABLE mytable ADD UNIQUE INDEX(a, b);
a und b sind die Namen der Spalten, die in der Kombination eindeutig sein sollen.
Auf einer Tabelle mit 2,6 Millionen Datensätzen sah das Ergebnis bei mir so aus:
mysql> select count(*) FROM mytable; +----------+ | count(*) | +----------+ | 2609405 | +----------+ 1 row in set (0.00 sec)
mysql> alter ignore table mytable ADD unique INDEX(a, b); Query OK, 2609405 rows affected (2 min 40.50 sec) Records: 2609405 Duplicates: 366073 Warnings: 0
mysql> select count(*) FROM mytable; +----------+ | count(*) | +----------+ | 2243332 | +----------+ 1 row in set (0.00 sec)
Diese Erkenntnis ist allerdings nicht auf meinen Mist gewachsen, sondern stammt von http://mediakey.dk/~cc/mysql-remove-duplicate-entries/.
Ubuntu/Debian: Liste aller installierten Pakete anzeigen
“Welche Pakete habe ich eigentlich auf meinem Server installiert?” Hier ist ein Einzeiler, um eine Liste aller installierten Pakete abzeigen zu lassen:
aptitude search '~i'
MySQL LOAD DATA LOCAL INFILE Probleme fixen
Heute lernen wir, wie man auf einem Plesk-System das Problem löst, wenn man keine Dateien mit dem Befehl LOAD DATA LOCAL INFILE in seine Datenbank laden kann.
Heute hatte ich über Stunden das Problem, dass der Befehl
mysql -u user --password=aaabbbccc dbname -e "LOAD DATA LOCAL INFILE 'mytextfile.txt' IGNORE INTO TABLE import;"
mit der Fehlermeldung
The used command is not allowed with this MySQL version
abgebrochen ist.
Das Internet war keine große Hilfe, so dass ich mich schlussendlich selbst auf die Suche und in meiner my.cnf herumgesucht habe. Und tatsächlich war dort ein unscheinbarer Eintrag vorhanden, der für den ganzen Ärger verantwortlich war:
set-variable=local-infile=0
Nachdem ich diesen Wert auf 1 gesetzt hatte, funktionierte alles wie am Schnürchen.
Sollte der Wert noch nicht in der my.cnf vorhanden sein, muss er in den Abschnitten [mysql] und [mysqld] hinzugefügt werden.
Echt ärgerlich, wenn einen solche Kleinigkeiten dermaßen lange aufhalten.
Screencast Overkill
Wieso gehen eigentlich so viele Blogger, vor allem in der Entwickler-Szene dazu über, immer mehr Artikel als Screencasts zu veröffentlichen? Wir sind doch Entwickler, und Entwickler schreiben Code. Schreiben!
Wenn ich tagsüber im Büro oder Abends vor dem Fernseher sitze, kann und will ich mir keine Videos ansehen. Und wenn ich es mir recht überlege, auch sonst nicht. Videos kann man nicht scannen, um schnell zu erfassen, ob die Inhalte für einen interessant sind, und sie sind so zeitaufwändig! Ich bin ein schneller Leser, ich kann einen drei Bildschirmseiten langen Text in fünf Minuten lesen (wenn er gut ist). Und wenn ich ihn für das Verständnis mehrfach lesen will/muss, ist das kein Problem.
Bei einem Fünf-Minuten-Video überlege ich genau fünf Sekunden, ob ich es mir angucken werde, und meistens lautet meine Entscheidung “Nein”. Videos sind nicht effektiv – zumindest nicht für mich als Entwickler. Ich will Code sehen und ggfs. kopieren.
Bin ich der etwa der Einzige, dem es so geht?
Technisat Digicorder per Webinterface steuern
Seit einer Woche bin ich im Besitz des grandiosen Technisat Digicorder HD K2. Dank des HDTV-Digital-Festplattenreceivers muss ich jetzt nicht mehr bis spät in die Nacht wach bleiben, um diesen oder jenen Klassiker gucken zu können, hurra!
Das Gerät hat außerdem einen Ethernet-Anschluss, über den man es per Web-Oberfläche konfigurieren kann, und noch besser: einen integrierten DynDNS-Client, durch den man Aufnahmen auch von außerhalb timen kann.
Eine in vielen Foren gestellte Frage lautet: “Wie ist das Passwort für die Web-Oberfläche?” – in meinem Fall ist das Passwort identisch mit dem DynDNS-Passwort. Was anderes probiere ich gar nicht erst aus :).
Optimierung der Zugriffsrechte auf einem Plesk-Server
Um es Web-Applikationen zu ermöglichen, Dateien auf einem Plesk-Server (Plesk 8.6, Debian Etch) zu erstellen oder zu bearbeiten, müssen einige Systen-Einstellungen geändert werden.
Im Zuge der Installation dieses Blogs bin ich auf das Problem gestoßen, dass Wordpress nicht in der Lage war, Dateien auf dem Server (Plugins, Themes, etc.) zu bearbeiten. Da ich nicht jedes Mal erneut die Zugriffsrechte für die entsprechenden Dateien setzen wollte, habe ich mich mit Googles Hilfe auf die Suche nach einer generellen Lösung gemacht und bin auf die folgende Lösung gekommen:
/etc/proftpd.conf 28c28 < Umask 022 --- > Umask 002
/etc/group 50c50 < psacln:x:2524: --- > psacln:x:2524:www-data,psaftp,psaadm
Zum Schluss muss nur noch der Apache2-Server neu gestartet werden:
/etc/init.d/apache2 reload
Nun kann Wordpress Dateien beschreiben, hurra!