Version: 2.0.96 (Debian 2.0.96-1) (using 4.2.2 (KDE 4.2.2), Debian packages) Compiler: cc OS: Linux (x86_64) release 2.6.29-1-amd64 Hello, When I scan a collection with no-latin characters, in amarok I can see only ???? instead of the ID's of the mp3's. The ID3v1.x and ID3v2.4 tag are in UTF encoding. Bellow you can see some debuging information, where you can notice that Greek names of the songs are displayed correctly. Bug Report ========== amarok: END__: static void App::handleCliArgs() - Took 0.00046s amarok: END__: virtual int App::newInstance() - Took 0.0006s snvv@siduxbox:~$ amarok: [MountPointManager] [WARNING!] NOT-IMPLEMENTED: void MountPointManager::startStatisticsUpdateJob() amarok: BEGIN: SvgHandler::SvgHandler(QObject*) amarok: END__: SvgHandler::SvgHandler(QObject*) - Took 0.00013s Couldn't resolve property: linearGradient5167 link XMLID_7_ hasn't been detected! link XMLID_7_ hasn't been detected! Couldn't resolve property: radialGradient3986 link XMLID_7_ hasn't been detected! link XMLID_7_ hasn't been detected! Couldn't resolve property: radialGradient3986 amarok: BEGIN: bool AmarokScript::ScriptImporter::loadQtBinding(const QString&) amarok: importing qt bindings "qt.network" amarok: END__: bool AmarokScript::ScriptImporter::loadQtBinding(const QString&) - Took 0.0076s amarok: BEGIN: void DaapCollectionFactory::connectToManualServers() amarok: END__: void DaapCollectionFactory::connectToManualServers() - Took 0.00011s amarok: BEGIN: bool AmarokScript::ScriptImporter::loadQtBinding(const QString&) amarok: importing qt bindings "qt.gui" amarok: END__: bool AmarokScript::ScriptImporter::loadQtBinding(const QString&) - Took 0.051s amarok: BEGIN: void CurrentEngine::stoppedState() amarok: END__: void CurrentEngine::stoppedState() - Took 0.00038s amarok: BEGIN: void CurrentTrack::dataUpdated(const QString&, const QHash<QString, QVariant>&) amarok: END__: void CurrentTrack::dataUpdated(const QString&, const QHash<QString, QVariant>&) - Took 0.00018s amarok: SCRIPT "Librivox.org" : "creating service..." amarok: BEGIN: static QScriptValue ScriptableServiceScript::ScriptableServiceScript_prototype_ctor(QScriptContext*, QScriptEngine*) amarok: BEGIN: bool ScriptableServiceManager::initService(const QString&, int, const QString&, const QString&, bool) amarok: initializing scripted service: "Librivox.org" amarok: BEGIN: ServiceBase::ServiceBase(const QString&, ServiceFactory*, bool, const QString&) amarok: END__: ServiceBase::ServiceBase(const QString&, ServiceFactory*, bool, const QString&) - Took 0.0023s amarok: BEGIN: void ServiceBase::setIcon(const QIcon&) amarok: END__: void ServiceBase::setIcon(const QIcon&) - Took 3.1e-05s amarok: BEGIN: void ScriptableService::init(int, const QString&, bool) amarok: BEGIN: ScriptableServiceCollection::ScriptableServiceCollection(const QString&) amarok: END__: ScriptableServiceCollection::ScriptableServiceCollection(const QString&) - Took 5.1e-05s amarok: END__: void ScriptableService::init(int, const QString&, bool) - Took 0.00013s amarok: END__: bool ScriptableServiceManager::initService(const QString&, int, const QString&, const QString&, bool) - Took 0.0028s amarok: END__: static QScriptValue ScriptableServiceScript::ScriptableServiceScript_prototype_ctor(QScriptContext*, QScriptEngine*) - Took 0.0029s amarok: SCRIPT "Librivox.org" : "done creating service!" amarok: BEGIN: void ScriptableServiceScript::slotCustomize(const QString&) amarok: SCRIPT "Librivox.org" : "customizing Librivox service" amarok: SCRIPT "Librivox.org" : "loading icon: /usr/share/kde4/apps/amarok/scripts/librivox_service/LibrivoxIcon.png" amarok: BEGIN: void ScriptableServiceManager::setIcon(const QString&, const QPixmap&) amarok: service: "Librivox.org" amarok: BEGIN: void ServiceBase::setIcon(const QIcon&) amarok: END__: void ServiceBase::setIcon(const QIcon&) - Took 3.3e-05s amarok: END__: void ScriptableServiceManager::setIcon(const QString&, const QPixmap&) - Took 0.00019s amarok: END__: void ScriptableServiceScript::slotCustomize(const QString&) - Took 0.0016s amarok: END__: bool ScriptManager::slotRunScript(QString, bool) - Took 0.77s amarok: BEGIN: bool ScriptManager::slotRunScript(QString, bool) amarok: BEGIN: void ScriptManager::startScriptEngine(QString) amarok: BEGIN: ScriptableServiceScript::ScriptableServiceScript(QScriptEngine*) amarok: END__: ScriptableServiceScript::ScriptableServiceScript(QScriptEngine*) - Took 5.3e-05s amarok: BEGIN: Downloader::Downloader(QScriptEngine*) amarok: END__: Downloader::Downloader(QScriptEngine*) - Took 5.9e-05s amarok: END__: void ScriptManager::startScriptEngine(QString) - Took 0.0009s amarok: BEGIN: bool AmarokScript::ScriptImporter::loadQtBinding(const QString&) amarok: importing qt bindings "qt.core" amarok: END__: bool AmarokScript::ScriptImporter::loadQtBinding(const QString&) - Took 0.018s amarok: BEGIN: bool AmarokScript::ScriptImporter::loadQtBinding(const QString&) amarok: importing qt bindings "qt.xml" amarok: END__: bool AmarokScript::ScriptImporter::loadQtBinding(const QString&) - Took 0.015s amarok: END__: bool ScriptManager::slotRunScript(QString, bool) - Took 0.042s amarok: END__: void ScriptManager::slotConfigChanged(bool) - Took 0.82s amarok: END__: void ScriptManager::findScripts() - Took 0.84s amarok: BEGIN: void CurrentEngine::resultReady(const QString&, const Meta::TrackList&) amarok: END__: void CurrentEngine::resultReady(const QString&, const Meta::TrackList&) - Took 9.3e-05s amarok: BEGIN: void CurrentEngine::setupTracksData() amarok: END__: void CurrentEngine::setupTracksData() - Took 7.6e-05s amarok: BEGIN: void CurrentTrack::dataUpdated(const QString&, const QHash<QString, QVariant>&) amarok: END__: void CurrentTrack::dataUpdated(const QString&, const QHash<QString, QVariant>&) - Took 0.00023s amarok: BEGIN: virtual void CurrentTrack::constraintsEvent(Plasma::Constraints) amarok: END__: virtual void CurrentTrack::constraintsEvent(Plasma::Constraints) - Took 0.00024s amarok: BEGIN: CollectionSetup::CollectionSetup(QWidget*) amarok: BEGIN: QStringList MountPointManager::collectionFolders() amarok: END__: QStringList MountPointManager::collectionFolders() - Took 0.00042s amarok: END__: CollectionSetup::CollectionSetup(QWidget*) - Took 0.013s amarok: BEGIN: virtual bool Amarok2ConfigDialog::hasChanged() amarok: BEGIN: virtual bool CollectionConfig::hasChanged() amarok: BEGIN: bool CollectionSetup::hasChanged() const amarok: BEGIN: QStringList MountPointManager::collectionFolders() amarok: END__: QStringList MountPointManager::collectionFolders() - Took 0.00018s amarok: END__: bool CollectionSetup::hasChanged() const - Took 0.00036s amarok: END__: virtual bool CollectionConfig::hasChanged() - Took 0.00054s amarok: BEGIN: virtual bool ServiceConfig::hasChanged() amarok: END__: virtual bool ServiceConfig::hasChanged() - Took 9e-05s amarok: END__: virtual bool Amarok2ConfigDialog::hasChanged() - Took 0.001s amarok: BEGIN: virtual bool CollectionConfig::hasChanged() amarok: BEGIN: bool CollectionSetup::hasChanged() const amarok: BEGIN: QStringList MountPointManager::collectionFolders() amarok: END__: QStringList MountPointManager::collectionFolders() - Took 0.00015s amarok: END__: bool CollectionSetup::hasChanged() const - Took 0.00036s amarok: END__: virtual bool CollectionConfig::hasChanged() - Took 0.00053s amarok: BEGIN: virtual bool ServiceConfig::hasChanged() amarok: END__: virtual bool ServiceConfig::hasChanged() - Took 9.1e-05s amarok: BEGIN: void ScanManager::startFullScan() amarok: BEGIN: void ScanManager::cleanTables() amarok: END__: void ScanManager::cleanTables() - Took 0.0016s amarok: BEGIN: XmlParseJob::XmlParseJob(ScanManager*, SqlCollection*) amarok: BEGIN: void ProgressBar::setDescription(const QString&) amarok: END__: void ProgressBar::setDescription(const QString&) - Took 0.00032s amarok: BEGIN: void CompoundProgressBar::addProgressBar(ProgressBar*, QObject*) amarok: p before: QPoint(2,-54) amarok: p after: QPoint(4,500) amarok: BEGIN: void ProgressBar::setDescription(const QString&) amarok: END__: void ProgressBar::setDescription(const QString&) - Took 0.00024s amarok: END__: void CompoundProgressBar::addProgressBar(ProgressBar*, QObject*) - Took 0.0018s amarok: BEGIN: ProgressBar* ProgressBar::setAbortSlot(QObject*, const char*) amarok: Setting abort slot for "Scanning music" amarok: connecting to 1deleteLater() amarok: END__: ProgressBar* ProgressBar::setAbortSlot(QObject*, const char*) - Took 0.00077s amarok: END__: XmlParseJob::XmlParseJob(ScanManager*, SqlCollection*) - Took 0.0049s amarok: Checking for batch file in "/home/snvv/.kde/share/apps/amarok/amarokcollectionscanner_batchfullscan.xml" amarok: BEGIN: virtual void XmlParseJob::run() amarok: BEGIN: ScanResultProcessor::ScanResultProcessor(SqlCollection*) amarok: END__: ScanResultProcessor::ScanResultProcessor(SqlCollection*) - Took 8.4e-05s amarok: GOING TO SCAN: amarok: BEGIN: QStringList MountPointManager::collectionFolders() amarok: END__: QStringList MountPointManager::collectionFolders() - Took 0.00042s amarok: "/home/snvv/A2/Giannhs Ploutarxos - Oi megalyteres epityxies (CD 1)" amarok: BEGIN: QStringList MountPointManager::collectionFolders() amarok: END__: QStringList MountPointManager::collectionFolders() - Took 0.00038s amarok: END__: void ScanManager::startFullScan() - Took 0.026s amarok: BEGIN: void DatabaseUpdater::createTemporaryTables() amarok: Initialized thread, count== 4 amarok: [ERROR!] GREPME MySQLe query failed! Specified key was too long; max key length is 1000 bytes on "CREATE UNIQUE INDEX urls_id_rpath_temp ON urls_temp(deviceid, rpath);" amarok: END__: void DatabaseUpdater::createTemporaryTables() - Took 0.026s amarok: BEGIN: void ScanManager::slotFinished() amarok: END__: void ScanManager::slotFinished() - Took 9.9e-05s amarok: [ERROR!] GREPME MySQLe query failed! Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '=' on "SELECT id FROM artists_temp WHERE name = 'Πλούταρχος';" amarok: Success. Committing result to database. amarok: [ERROR!] GREPME MySQLe query failed! Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '=' on "SELECT id FROM urls_temp WHERE deviceid = -1 AND rpath = './home/snvv/A2/Giannhs Ploutarxos - Oi megalyteres epityxies (CD 1)/01. ΑΝΑΣΑ ΜΟΥ.mp3';" amarok: [ERROR!] GREPME MySQLe query failed! Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '=' on "SELECT id FROM urls_temp WHERE deviceid = -1 AND rpath = './home/snvv/A2/Giannhs Ploutarxos - Oi megalyteres epityxies (CD 1)/02. ΚΑΤΕΒΑ ΛΙΓΟ ΝΑ ΣΕ ΔΩ.mp3';" amarok: [ERROR!] GREPME MySQLe query failed! Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '=' on "SELECT id FROM urls_temp WHERE deviceid = -1 AND rpath = './home/snvv/A2/Giannhs Ploutarxos - Oi megalyteres epityxies (CD 1)/03. ΟΛΑ ΣΕ ΣΕΝΑ ΤΑ ΒΡΗΚΑ.mp3';" amarok: [ERROR!] GREPME MySQLe query failed! Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '=' on "SELECT id FROM urls_temp WHERE deviceid = -1 AND rpath = './home/snvv/A2/Giannhs Ploutarxos - Oi megalyteres epityxies (CD 1)/04. ΜΟΝΟ ΕΣΥ.mp3';" amarok: [ERROR!] GREPME MySQLe query failed! Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '=' on "SELECT id FROM urls_temp WHERE deviceid = -1 AND rpath = './home/snvv/A2/Giannhs Ploutarxos - Oi megalyteres epityxies (CD 1)/05. ΦΥΣΑΕΙ ΠΟΛΥ.mp3';" amarok: [ERROR!] GREPME MySQLe query failed! Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '=' on "SELECT id FROM urls_temp WHERE deviceid = -1 AND rpath = './home/snvv/A2/Giannhs Ploutarxos - Oi megalyteres epityxies (CD 1)/06. ΕΨΑΧΝΑ ΧΡΟΝΙΑ ΝΑ ΣΕ ΒΡΩ.mp3';" amarok: [ERROR!] GREPME MySQLe query failed! Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '=' on "SELECT id FROM urls_temp WHERE deviceid = -1 AND rpath = './home/snvv/A2/Giannhs Ploutarxos - Oi megalyteres epityxies (CD 1)/07. ΛΕΠΤΟΜΕΡΕΙΕΣ.mp3';" amarok: [ERROR!] GREPME MySQLe query failed! Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '=' on "SELECT id FROM urls_temp WHERE deviceid = -1 AND rpath = './home/snvv/A2/Giannhs Ploutarxos - Oi megalyteres epityxies (CD 1)/08. ΧΑΡΤΙΝΗ ΚΑΡΔΙΑ.mp3';" amarok: [ERROR!] GREPME MySQLe query failed! Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '=' on "SELECT id FROM urls_temp WHERE deviceid = -1 AND rpath = './home/snvv/A2/Giannhs Ploutarxos - Oi megalyteres epityxies (CD 1)/09. ΠΩΣ ΒΑ ΓΙΝΟΥΜΕ ΞΕΝΟΙ.mp3';" amarok: [ERROR!] GREPME MySQLe query failed! Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '=' on "SELECT id FROM urls_temp WHERE deviceid = -1 AND rpath = './home/snvv/A2/Giannhs Ploutarxos - Oi megalyteres epityxies (CD 1)/10. ΕΧΩ ΑΝΑΓΚΗ ΝΑ ΣΕ ΔΩ.mp3';" amarok: [ERROR!] GREPME MySQLe query failed! Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '=' on "SELECT id FROM urls_temp WHERE deviceid = -1 AND rpath = './home/snvv/A2/Giannhs Ploutarxos - Oi megalyteres epityxies (CD 1)/11. ΜΗΠΩΣ ΣΟΥ ΖΗΤΗΣΑ ΠΟΛΛΑ.mp3';" amarok: [ERROR!] GREPME MySQLe query failed! Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '=' on "SELECT id FROM urls_temp WHERE deviceid = -1 AND rpath = './home/snvv/A2/Giannhs Ploutarxos - Oi megalyteres epityxies (CD 1)/12. ΔΕΝ ΕΙΝΑΙ ΤΩΡΑ ΠΙΑ ΕΔΩ.mp3';" amarok: BEGIN: void DatabaseUpdater::copyToPermanentTables() amarok: BEGIN: void CollectionTreeView::slotExpand(const QModelIndex&) amarok: modelindex = QModelIndex(0,0,0x2c2cb40,CollectionTreeItemModel(0x2c2c7f0) ) amarok: m_filterModel ? true amarok: END__: void CollectionTreeView::slotExpand(const QModelIndex&) - Took 0.00042s amarok: END__: void DatabaseUpdater::copyToPermanentTables() - Took 0.012s amarok: BEGIN: void DatabaseUpdater::removeTemporaryTables() amarok: END__: void DatabaseUpdater::removeTemporaryTables() - Took 0.0013s amarok: Sending changed signal amarok: BEGIN: void CollectionTreeView::slotExpand(const QModelIndex&) amarok: modelindex = QModelIndex(0,0,0x2c2cb40,CollectionTreeItemModel(0x2c2c7f0) ) amarok: m_filterModel ? true amarok: END__: void CollectionTreeView::slotExpand(const QModelIndex&) - Took 0.00031s amarok: BEGIN: void SqlCollection::updateTrackUrls(TrackUrls) amarok: END__: void SqlCollection::updateTrackUrls(TrackUrls) - Took 0.0085s amarok: BEGIN: virtual ScanResultProcessor::~ScanResultProcessor() amarok: END__: virtual ScanResultProcessor::~ScanResultProcessor() - Took 3.4e-05s amarok: END__: virtual void XmlParseJob::run() - Took 0.19s amarok: BEGIN: virtual XmlParseJob::~XmlParseJob() amarok: BEGIN: void CompoundProgressBar::childBarComplete(ProgressBar*) amarok: p before: QPoint(2,-9) amarok: p after: QPoint(4,544) amarok: BEGIN: void ProgressBar::setDescription(const QString&) amarok: END__: void ProgressBar::setDescription(const QString&) - Took 4.7e-05s amarok: BEGIN: void StatusBar::hideProgress() amarok: END__: void StatusBar::hideProgress() - Took 0.00016s amarok: END__: void CompoundProgressBar::childBarComplete(ProgressBar*) - Took 0.00054s amarok: END__: virtual XmlParseJob::~XmlParseJob() - Took 0.0006s amarok: BEGIN: void CollectionSetup::writeConfig() amarok: BEGIN: QStringList MountPointManager::collectionFolders() amarok: END__: QStringList MountPointManager::collectionFolders() - Took 0.00043s amarok: END__: void CollectionSetup::writeConfig() - Took 0.0012s amarok(30901) Amarok2ConfigDialog::~Amarok2ConfigDialog: "" amarok: BEGIN: virtual OSDWidget::~OSDWidget() amarok: END__: virtual OSDWidget::~OSDWidget() - Took 0.00021s QPainter::begin: Cannot paint on a null pixmap QPainter::translate: Painter not active QPainter::end: Painter not active, aborted QPainter::begin: Cannot paint on a null pixmap QPainter::translate: Painter not active QPainter::end: Painter not active, aborted snvv@siduxbox:~$ amarok: BEGIN: void ScanManager::startIncrementalScan() amarok: BEGIN: QStringList ScanManager::getDirsToScan() amarok: END__: QStringList ScanManager::getDirsToScan() - Took 0.00071s amarok: GOING TO SCAN: amarok: Scanning nothing, return. amarok: BEGIN: void ScanManager::writeBatchIncrementalInfoFile() amarok: END__: void ScanManager::writeBatchIncrementalInfoFile() - Took 0.00067s amarok: END__: void ScanManager::startIncrementalScan() - Took 0.002s amarok: BEGIN: void ScanManager::startIncrementalScan() amarok: BEGIN: QStringList ScanManager::getDirsToScan() amarok: END__: QStringList ScanManager::getDirsToScan() - Took 0.00078s amarok: GOING TO SCAN: amarok: Scanning nothing, return. amarok: BEGIN: void ScanManager::writeBatchIncrementalInfoFile() amarok: END__: void ScanManager::writeBatchIncrementalInfoFile() - Took 0.00068s amarok: END__: void ScanManager::startIncrementalScan() - Took 0.0021s
The encodings on the temporary tables and the real tables in the MySQL collection are being set differently, and this seems to be causing some problems. I guess we should be forcing the collations on the temporary tables to be the same as the real tables.
I don't know if it helps you to further diagnose the issue, but when I removed default-character-set = utf8 in /etc/mysql/my.cnf and I dropped the old amarok database and I created a new one, the problem "solved". That's means we cannot use our old amarok database. Regards.
Confirm this on 2.1.1 After force rescanning by Amarok, Amarok show me randomly ??? in name, artist or song. It's for japanese and russian lang but not at all tracks. I read that problem with creation DB in Amarok. Is this problem present now because you modifing your DB schema or change working with DB in Amarok?
The situation with 2.1.1 is much worse than before. It destroy even the newly created DB. I reverted back to 2.0.96 to solve the problem. (other versions from 2.0.96 to just before 2.2.1 worked just fine but I use 2.0.96 because I could not find them for my debian system.
I read about bug when downgrading Amarok (lost some files in collection). This bug presents in Amarok 2.1.1 and I want to read a comment from developers. I think this problem linked with problem (Bad search with match case). As you can find a bug with the letter of one of developer (I think he is) which explain this bug. He says that problem in conversation with Latin1 encoding in DB and UTF8 encoding string adding to the table in DB.
Duplicate of this bug: http://bugs.kde.org/show_bug.cgi?id=191871
No. This is not a duplicate bug of 191871. In 191871 case the problem was consisted across all tags and next (svn) versions solve the problem. In 2.1.1 it destroys some tags. Some other tags are not shown at all, and in general something is really messed with the scanner in the latest version.
Maybe related to this: http://bugs.kde.org/show_bug.cgi?id=189527#c12
*** This bug has been marked as a duplicate of bug 189527 ***
(In reply to comment #9) > > *** This bug has been marked as a duplicate of bug 189527 *** No, it is not, that other bug is about special characters in the file path, not about id3 tags... This is solved for me in 2.2-SVN, r985453, build 23.6.2009