This forum has been archived. All content is frozen. Please use KDE Discuss instead.

Punkte und Zähler erneuern sich nicht. MySql-DB geändert?

Tags: None
(comma "," separated)
joachim
Registered Member
Posts
15
Karma
0
Hallo!

Ich habe mir den Amarok 1.4.1 Quelltext selbst kompiliert. Mit MySql-Unterstützung.
Zuvor hatte ich Amarok 1.3.9 laufen. Installiert aus diesem rpm-Paket für Mandriva 2006: http://www.gkmweb.com/amarok/2006.0/1.3 ... m.i586.rpm
Die MySql-Datenbank wurde aber schon mit Version 1.3.8 oder 1.3.7 erzeugt. So genau weiß ich es nicht mehr.

Amarok 1.4.1 läuft soweit problemlos. Ich finde das Programm macht ne tolle Entwicklung.  :smilie:
Allerdings ist mir jetzt aufgefallen, daß der Abspielzähler und die Punktewertung nicht aktuallisiert werden. Immer wenn ich ein Stück gespielt habe werden die Werte in der Wiedergabeliste zwar geändert. Aber wohl nicht dauerhaft in der Datenbank gespeichert. Denn wenn ich die Wiedergabeliste neu fülle, oder mir mit Rechtsklick die Metadaten des gespielten Stücks anschaue, dann sind die Werte so wie sie vorher waren.
Auf der Konsole habe ich folgende Meldungen gefunden:
Code: Select all
amarok: [CollectionDB] MYSQL QUERY FAILED: Unknown column 'rating' in 'field list'
amarok: FAILED QUERY: SELECT rating FROM statistics WHERE url = '...
...
amarok:   [CollectionDB] MYSQL QUERY FAILED: Unknown column 'rating' in 'field list'
amarok: FAILED QUERY: SELECT playcounter, createdate, percentage, rating FROM statistics WHERE url = '...
...
amarok: [CollectionDB] MYSQL QUERY FAILED: Unknown column 'rating' in 'field list'
amarok: FAILED QUERY: SELECT playcounter, createdate, accessdate, rating FROM statistics WHERE url = '...


Das sieht so aus, als ob sich was an der Struktur der MySql-Datenbank oder der Bezeichnung der Datenbankfelder geändert hätte. Da es jetzt diese getrennte Punkte- und Sternchenwertung gibt, ist mir wohl klar, daß es ein neues Feld in der Datenbank geben muß. Aber ich hatte bisher nirgends gelesen, daß die Datenbanken der unterschiedlichen Versionen nicht mehr kompatibel sind.

Muß ich jetzt die Datenbank löschen und neu erzeugen lassen?
Also die Datenbank bei der dieses Problem jetzt aufgetreten ist, liegt bei mir auf einer Art Testsystem. Die ist nicht wichtig. Die Frage ist, wie ich mich jetzt auf meinem laufenden System verhalte. Dort habe ich noch Amarok 1.3.9 und eine gut gefüllte Datenbank.  :wink:

(Der hier könnte eventuell dasselbe Problem haben: "Scores" no longer being updated http://amarok.kde.org/forum/index.php/t ... 595.0.html)
joachim
Registered Member
Posts
15
Karma
0
So... ich habe jetzt einfach mal selber was ausprobiert. (Wozu hab ich mein 'Testsystem'  :wink:) Und scheinbar funktioniert es. Achtung: Ich übernehme natürlich keine Garantien!

Wie es scheint fehlt ja wohl das Feld rating in der Tabelle statistics. Also habe ich einfach per Hand das Feld in der MySQL-Datenbank ergänzt. Da ich vermutet hatte, daß Werte von 1 bis 5 in 0,5er-Schritten eingetragen werden, habe ich als Datentyp float genommen.
Und siehe da: die Probleme scheinen behoben. Die Punkte, die Bewertung und der Abspielzähler werden wieder aktualisiert. (Ich denke mal, da in einer Abfrage manchmal mehrere Felder abgefragt wurden, und die Abfrage dann wegen dem fehlendem Feld rating fehlschlug, wurden auch die anderen Werte in Mitleidenschaft gezogen.)

Ich habe mir dann nochmal die MySQL-Datenbank angeschaut. Es werden wohl ganze Zahlen gespeichert. Mir scheint, immer der doppelte Wert der Bewertung. Also zum Beispiel für die Bewertung 3,5 eine 7. Der Datentyp könnte also integer oder sowas sein. Vielleicht auch tinyint? Ich kenne mich da mit den Datentypen in MySQL grade nicht so aus.

Ich hätte jetzt noch ganz gerne eine Bestätigung, ob man das so problemlos machen kann. Und ausserdem was für einen Datentyp das Feld rating wirklich haben soll.
joachim
Registered Member
Posts
15
Karma
0
Ich glaube, ich bin auf die Ursache des Problems gestossen.

Als ich vor Monaten die MySQL-Datenbank nach der Beschreibung in der HowTo erzeugte, stand dort noch folgendes:
Code: Select all
mysql> GRANT select, insert, update, delete, create, drop, create temporary tables, index ON amarokdb.* TO amarok@localhost IDENTIFIED BY 'PASSWORD_CHANGE_ME';


Damit Amarok bei einem Versionswechsel auch bestehende Tabellen in der Datenbank verändern kann, braucht der MySQL-Benutzer mindestens auch noch die Rechte für ALTER.

Man sollte wohl vor dem Update auf eine neue Amarok-Version dringend die Rechte des MySQL-Benutzer erweitern. In der aktuellen Version des HowTo wird ein pauschales GRANT ALL gemacht. Also folgendes ausführen:
Code: Select all
$ mysql -u root -p
Enter password: xxxxxx

mysql> GRANT ALL ON amarokdb.* TO amarok@localhost;
mysql> QUIT

(Statt amarokdb den Namen der Datenbank einsetzen und statt amarok den Benutzernamen.)


Leider löst das nicht das bestehende Problem. (Jedenfalls bei mir nicht.) Amarok überprüft wohl nur beim ersten Programmstart nach dem Update die Datenbank. Danach scheint Amarok davon auszugehen, daß die Datenbank in Ordnung ist. Das ist allerdings problematisch, wenn das Update der Datenbank schief gelaufen ist. (Das ist allerdings alles Spekulation von mir, ich habe es nicht programmiert.  :wink:)


Das fehlende Feld rating in der Tabelle statistics fügt man anscheinend folgendermaßen ein. Dazu müssen zuvor die Rechte des Benutzers, wie oben beschrieben, erweitert worden sein.
Code: Select all
$ mysql -u amarok -p
Enter password: xxxxxx

mysql> USE amarokdb;
mysql> ALTER TABLE statistics ADD (rating INT DEFAULT 0, KEY(rating));
mysql> QUIT

(amarokdb= Datenbankname / amarok= Benutzername)
(Falls der MySQL-Server auf einem anderen Rechner läuft: $ mysql -h host -u user -p)

Vielleicht noch hilfreich: Nachdem man die Datenbank mit USE amarokdb; ausgewählt hat, kann man mit DESCRIBE statistics; die Felder der Tabelle anzeigen lassen. Und schauen ob rating fehlt.
User avatar
markey
KDE Developer
Posts
2286
Karma
3
OS
Welche MySQL Version habt ihr denn? Meines Wissens nach braucht Amarok mittlerweile v5.


--
Mark Kretschmann - Amarok Developer
joachim
Registered Member
Posts
15
Karma
0
Mark Kretschmann wrote:Welche MySQL Version habt ihr denn? Meines Wissens nach braucht Amarok mittlerweile v5.


Ich habe MySQL Version 4.1.12 (Mandriva Linux 2006).

Laut README im aktuellen Quelltext-Tar (amarok-1.4.1.tar.bz2):
DEPENDENCIES
==============
[...]
Optional
[...]
    * MySQL 4


Das configure-script hat auch keinen Alarm geschlagen.
User avatar
markey
KDE Developer
Posts
2286
Karma
3
OS
Ah jo, wir haben das erst neulich bemerkt, das v4 nicht mehr funzt. Also, upgrade mal zu v5.


--
Mark Kretschmann - Amarok Developer
joachim
Registered Member
Posts
15
Karma
0
Hmmm... was funktioniert denn nicht?
Ich scheine keine weiteren Probleme zu haben.

Mandriva Linux 2006 bietet nur eine MySQL 5.0.4-beta im Contrib-Zweig an. Pakete im Contrib-Zweig werden aber nicht mit Updates versorgt. Mysql 4.1.12 ist aus dem Main-Zweig und wird unterstützt und mit Sicherheitsupdates versorgt.
Da muß ich wohl auf Mandriva 2007 warten.
User avatar
markey
KDE Developer
Posts
2286
Karma
3
OS
Also ehrlich gesagt sind wir nicht sicher, ob v4 funzt oder nicht. Es ist so, dass es ein paar Bug Reports von v4 Usern gab, und das sah nach einer Inkompatibilität aus. Viel mehr ist z.Z. nicht bekannt.

Ian benutzt v4, und er sagt er hat keine Probleme.


--
Mark Kretschmann - Amarok Developer


Bookmarks



Who is online

Registered users: bancha, Bing [Bot], daret, Evergrowing, Google [Bot], lockheed, sandyvee, Sogou [Bot]