# media-gfx/digikam-3.1.0 immer noch Bug mit MySQL

## flammenflitzer

Hallo,

ich habe derzeit 

```
media-gfx/digikam-3.1.0:4  USE="addressbook gphoto2 handbook mysql semantic-desktop thumbnails video (-aqua) -debug -doc -themedesigner"
```

installiert.

Die DB ist mit mysql angelegt. Allerdings kann digikam nicht verbinden.

```
olaf@flammenflitzer ~ $ digikam

digikam(5100)/digikam (core): Error while opening the database. Error details [ QSqlError(1049, "QMYSQL: Verbindungsaufbau nicht möglich", "Unknown database 'digikam4.b'") ] 

... 

QSqlDatabasePrivate::removeDatabase: connection 'ConnectionTest' is still in use, all queries will cease to work.

QSqlDatabase:  driver not loaded

...

QSqlDatabasePrivate::removeDatabase: connection 'digikamDatabase-12662512' is still in use, all queries will cease to work.

QSqlDatabasePrivate::addDatabase: duplicate connection name 'digikamDatabase-12662512', old connection removed.

QSqlQuery::prepare: database not open

QSqlDatabase:  driver not loaded

QSqlDatabase: available drivers: QSQLITE QSQLITE3 QMYSQL3 QMYSQL

QSqlQuery::prepare: database not open

"/org/freedesktop/UDisks2/drives/SAMSUNG_HD401LJ_400511FP324666" : property "DeviceNumber" does not exist 

"/org/freedesktop/UDisks2/drives/SAMSUNG_HD401LJ_400511FP324666" : property "Device" does not exist 

...

QSqlDatabase:  driver not loaded

QSqlDatabase: available drivers: QSQLITE QSQLITE3 QMYSQL3 QMYSQL

QSqlQuery::prepare: database not open

...

QSqlDatabase: available drivers: QSQLITE QSQLITE3 QMYSQL3 QMYSQL

QSqlDatabasePrivate::removeDatabase: connection 'digikamDatabase-14850064' is still in use, all queries will cease to work.

QSqlDatabasePrivate::addDatabase: duplicate connection name 'digikamDatabase-14850064', old connection removed.

QSqlQuery::prepare: database not open

QSqlDatabase:  driver not loaded

...

QSqlDatabase: available drivers: QSQLITE QSQLITE3 QMYSQL3 QMYSQL

QSqlDatabasePrivate::removeDatabase: connection 'digikamDatabase-14850064' is still in use, all queries will cease to work.

QSqlDatabasePrivate::addDatabase: duplicate connection name 'digikamDatabase-14850064', old connection removed.

QSqlDatabase:  driver not loaded

QSqlDatabase: available drivers: QSQLITE QSQLITE3 QMYSQL3 QMYSQL

QSqlDatabasePrivate::removeDatabase: connection 'digikamDatabase-14850064' is still in use, all queries will cease to work.

QSqlDatabasePrivate::addDatabase: duplicate connection name 'digikamDatabase-14850064', old connection removed.

QSqlQuery::prepare: database not open

QSqlDatabase:  driver not loaded

QSqlDatabase: available drivers: QSQLITE QSQLITE3 QMYSQL3 QMYSQL

QSqlQuery::prepare: database not open

QSqlDatabase:  driver not loaded

...

QSqlDatabase: available drivers: QSQLITE QSQLITE3 QMYSQL3 QMYSQL

QSqlDatabasePrivate::removeDatabase: connection 'digikamDatabase-14850064' is still in use, all queries will cease to work.

QSqlDatabasePrivate::addDatabase: duplicate connection name 'digikamDatabase-14850064', old connection removed.

QSqlQuery::prepare: database not open

QSqlDatabase:  driver not loaded

...

QSqlDatabase: available drivers: QSQLITE QSQLITE3 QMYSQL3 QMYSQL

QSqlQuery::prepare: database not open

digikam(5100)/digikam (core): No DB action defined for "InsertTag" ! Implementation missing for this database type. 

QSqlDatabase:  driver not loaded

QSqlDatabase: available drivers: QSQLITE QSQLITE3 QMYSQL3 QMYSQL
```

```
mysql --version

mysql  Ver 14.14 Distrib 5.5.30, for Linux (x86_64) using readline 6.2
```

Hat jemand eine Lösung?

MfG

----------

## Finswimmer

```
"Unknown database 'digikam4.b'"
```

Zeig doch mal, wie die Einstellungen für den DB-Verbindungaufbau sind.

Und gib an, wie die Datenbank über mysql (commandline) erreicht werden kann.

----------

## flammenflitzer

```
mysql> DROP DATABASE digikam;

Query OK, 0 rows affected (0.00 sec)

mysql> CREATE DATABASE digikam;

Query OK, 1 row affected (0.00 sec)

mysql> USE digikam;

Database changed

mysql> GRANT ALL ON digikam .* TO digikam@flammenflitzer IDENTIFIED BY '12345678';

Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;

Query OK, 0 rows affected (0.00 sec)

mysql> quit;

Bye
```

```
digikam Einstellungen

Hostname: flammenflitzer

 Schema Name: /home/olaf/Bilder/digikam4.db

 Thumbnails Schema Name: /home/olaf/Bilder/thumbnails-digikam.db

 Port: 3306

 Username: digikam

 Password: 12345678

"Datenbankverbindung erfolgreich geprüft"
```

```
/home/olaf/Bilder/digikam4.db

/home/olaf/Bilder/thumbnails-digikam.db
```

existieren nicht, das sie ja erst nach dem Einlesen des Bildverzeichnis angelegt werden.

----------

## firefly

 *flammenflitzer wrote:*   

> 
> 
> ```
> /home/olaf/Bilder/digikam4.db
> 
> ...

 

Da hast du anscheinend die Dokumentation missverstanden. Die Datenbanken an sich müssen vorhanden sein und werden nicht von digikam angelegt.

 *Quote:*   

> Obviously, to use digiKam with MySQL, you need a MySQL server. You also have to create two MySQL databases: one for storing photo metadata (e.g., digikam) and the other for storing thumbnails (e.g., thumbnails-digikam). And before you proceed, note the database connection information such as MySQL server address, user name, and password — you’ll need it when configuring MySQL settings in digiKam. 

 

Quelle:

http://scribblesandsnaps.com/2010/10/15/using-digikam-with-mysql/

oder http://userbase.kde.org/Digikam/Using_digiKam_with_MySQL

----------

## flammenflitzer

```
mysql> DROP DATABASE digikam;

Query OK, 0 rows affected (0.00 sec)

mysql> CREATE DATABASE digikam;

Query OK, 1 row affected (0.00 sec)

mysql> USE digikam;

Database changed

mysql> GRANT ALL ON digikam .* TO digikam@flammenflitzer IDENTIFIED BY '12345678';

Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;

Query OK, 0 rows affected (0.00 sec)

mysql> CREATE DATABASE digithumb;

Query OK, 1 row affected (0.00 sec)

mysql> USE digithumb;

Database changed

mysql> GRANT ALL ON digithumb .* TO digikam@flammenflitzer IDENTIFIED BY '12345678';

Query OK, 0 rows affected (0.04 sec)

??? Oder sollte da stehen: GRANT ALL ON digikam .* TO digithumb@flammenflitzer IDENTIFIED BY '12345678';

??? Ist da ein Eingabefehler dabei: statt -> GRANT ALL ON digikam .* TO  -> GRANT ALL ON digikam.* TO (Ich glaube, da war ein Leerzeichen zuviel drin.)

                                                               GRANT ALL ON digikam .* TO -> GRANT ALL ON digikam.* TO (Ich glaube, da war ein Leerzeichen zuviel drin.)

                                                   

mysql> FLUSH PRIVILEGES;

Query OK, 0 rows affected (0.03 sec)

```

Also 2 DB angelegt.

```
mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| akonadi            |

| amarok             |

| digikam            |

| digithumb          |

| mysql              |

| test               |

| thumbnails 
```

```
digikam Einstellungen

Hostname: flammenflitzer oder 127.0.0.1

 Schema Name: digikam.db

 Thumbnails Schema Name: digithumb.db

 Port: 3306

 Username: digikam

 Password: 12345678

"Datenbankverbindung erfolgreich geprüft"
```

Oder bin ich total auf dem falschen Dampfer. 

```
GRANT ALL ON digikam .* TO >muss hier vielleicht mein Username rein ?<@flammenflitzer IDENTIFIED BY 'Muss hier mein Passwort rein?';

GRANT ALL ON digikam .* TO olaf@flammenflitzer IDENTIFIED BY 'mein Olaf Passwort;
```

In der Vergangeheit habe ich immer nur eine DB anlegen müssen.

----------

## flammenflitzer

```
mysql> DROP DATABASE digikam;

Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> DROP DATABASE digithumb;

Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> CREATE DATABASE digikam;

Query OK, 1 row affected (0.00 sec)

mysql> USE digikam;

Database changed

mysql> GRANT ALL ON digikam.* TO digikam_user@localhost IDENTIFIED BY 'okmm4538';

Query OK, 0 rows affected (0.01 sec)

mysql> FLUSH PRIVILEGES;

Query OK, 0 rows affected (0.00 sec)
```

```

digikam Einstellungen

Hostname: localhost

 Schema Name: digikam

 Thumbnails Schema Name: digikam

 Port: 3306

 Username: digikam_user

 Password: okmm4538

"Datenbankverbindung erfolgreich geprüft"
```

```
Fehlermeldung:
```

Die hatte ich auch schon in der Vergangenheit

```
Sie besitzen nicht die nötigen Rechte für die Datenbank.

Sie besitzen fplgende Rechte nicht:

CREATE TRIGGER

Überprüfen Sie die Rechte Ihrer Datenbank und starten Sie digiKam neu.
```

In der Vergangenheit half

```

mysql> GRANT ALL ON *.* TO digikam_user@localhost IDENTIFIED BY 'okmm4538';
```

```

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
```

Das funktioniert jetzt nicht mehr

----------

## JoHo42

Hi,

Digikam braucht mehr als einen Datenbank Benutzer.

Bei mir läuft es, hatte aber auch Probleme hatte in der Mysql einen Benutzer für die Datenbank die Digikam benutzt angelegt.

Digikam konnte nicht drauf zu greifen, da der mehr als einen Benutzer braucht.

Also ein und der selbe User Benutzer muss sich mehrmal auf die Datenbank einlogen können.

Gruss Jörg

----------

## flammenflitzer

Wie hast du das gelöst? Bitte wenn möglich mal die Details. Ich hatte auch mit dem Anlegen von 2 separaten Datenbanken für Digikam keinen Erfolg.

```
Eine DB für: Schema Name: digikam 

Eine DB für: Thumbnails Schema Name: digithumb
```

MfG

----------

## JoHo42

Hallo,

nicht zwei Datenbanken anlegen.

Du brauchst für Digikam nur eine Datenbank.

Versuch doch mal ob du Dich mit root auf deine Digikam Datenbank einlogen kannst.

Also den USER root in Digikam configs / in den Einstellungen eintragen.

Wichtig ist halt das du Dich mit dem USER root mehrmals an die MYSQL anmelden kannst.

Also drei Konsolen auf machen und mysql -uroot -p dreimal gleichzeitig anmelden.

Also alle Konsolen offen lassen und dich nach und nach anmelden. Das ist halt wichtig, das du Dich mit einem benutzer mehrmals anmelden kannst.

Was du auch noch versuchen kannst, ist anstelle von localhost 127.0.0.1 nutzen, den bei mir geht das nicht mehr richtig mit dem localhost nach irgend einem Update. Seit dem benutze ich in Digikam 127.0.0.1.

Gruss Jörg

----------

## flammenflitzer

```
GRANT ALL ON *.* TO digikam_user@localhost IDENTIFIED BY 'okmm4538';
```

funktioniert wieder. 

```

flammenflitzer olaf # /etc/init.d/mysql stop

flammenflitzer olaf # cd /var/lib/

flammenflitzer olaf #  mv mysql mysql-alt

flammenflitzer olaf #  emerge --config =dev-db/mariadb-5.5.30

flammenflitzer olaf # /etc/init.d/mysql start

```

Dann das root passwort gesetzt (/usr/bin/mysqladmin -u root password).

```
mysql> GRANT ALL ON *.* TO digikam_user@localhost IDENTIFIED BY 'meinPasswort';
```

funktioniert jetzt. Damit funktioniert auch Digikam. 

Danke

MfG

----------

