MariaDB

Garmin fenix 7X und epix Gen 2 im Test

Der Schwerpunkt dieses Tests und Vergleichs der Garmin Fenix 7X Solar und Garmin Epix Gen 2 liegt auf den Sensoren wie Höhenmesser, Positionsbestimmung und Herzfrequenz. Was unterscheidet die beiden GPS-Outdoor-Smartwatches? Und wie gut ist die Taschenlampe der Fenix 7X für den Outdoorbereich? Hier geht es zum Test der Outdoor-Smartwatches ...
  • Hallo,


    ich bin Geocacher und möchte auch Caches speichern. Das Funktioniert mit SQLite ohne Probleme.

    Wenn ich einen Pocketquery auf meiner Synology Discstation unter MariaDB speichern möchte erscheint folgender Fehler:


    Code
    2020-01-15 17:58:32.332 [warning] Execution of SQL-Statement ` "INSERT INTO items (type, keyqms, icon, name, date, comment, data, hash) VALUES (:type, :keyqms, :icon, :name, :date, :comment, :data, :hash)" ` failed:
    2020-01-15 17:58:32.332 [warning] QSqlError("1366", "QMYSQL3: Der Befehl konnte nicht ausgeführt werden", "Incorrect string value: '\\xF0\\x9F\\x97\\x9D\\xEF\\xB8...' for column `caching`.`items`.`comment` at row 1")

    Ich habe auch die Fehlermeldung angehängt.


    Ich benutze (Archlinux):

    MariaDB 10.21.3

    QMapShack 1.14.0

  • Wie hast du denn auf die neue Datenbank umgestellt? Hast die Tabellen alle neu angelegt?

  • Wie hast du denn auf die neue Datenbank umgestellt? Hast die Tabellen alle neu angelegt?

    Ich habe nichts umgestellt. Die Datenbanken wurden neu angelegt. Ich habe einmal die .gpx in SQLite gespeichert und einmal in MySQL.


    Ich habe den Fehler mal weiter eingekreist.

    Code
    Es stolpert über diesen Eintrag:
    <b>GC63XZW</b><br/>
     🗝️ HomeZone 🗝️ (Micro, D 4.0, T 2.0)</div>

    Es geht bestimmt um das encodieren der Schlüsselsymbole.

  • Datenschutz ist uns & Euch wichtig, daher verzichten wir auf Bannerwerbung & Web-Analysetools! Um das Forum zu unterstützen bitten wir Euch über diesen Link: bei Amazon zu bestellen....
    Für Euch ist das nur ein Klick, uns hilft es das Forum langfristig und werbefrei für Euch zu betreiben! Vielen vielen Dank...
  • Ich hab das mit MySql schon lange nicht mehr ausprobiert. Ich könnte mir jetzt zwei Gründe vorstellen.


    1. MariaDB Version zu alt. Da gab es eine Grenze. Ich weiß nur nicht mehr bei welcher Version

    2. In dem Cache sind tatsächlich seltsame Steuerzeichen. Vielleicht auch irgendein UTF-8 Problem bei der Datenbank.


    Edit:

    Ok, sehe gerade Du warst schneller. Schau mal ob dein Setup UTF-8 unterstützt.

  • Okay weitere Nachforschungen :)


    Bei Stackoverflow wir empfohlen die Table mit dem Charset 'utf8mb4' anzulegen.

    QMapShack benutzt 'utf8'.

    Ich habe mal ein testtable mit 'utf8mb4' angelegt:

    Wenn ich nun ein 'INSERT' in die QMapShack Tabelle items starte:

    Code
    MariaDB [caching]> insert into items(comment) values('🗝️'); 
    ERROR 1366 (22007): Incorrect string value: '\xF0\x9F\x97\x9D\xEF\xB8...' for column `caching`.`items`.`comment` at row 1

    Wenn ich nun ein 'INSERT' in testtable starte:

    Code
    MariaDB [caching]> insert into testtable(comment) values('🗝️');
    Query OK, 1 row affected (0.04 sec)
  • Datenschutz ist uns & Euch wichtig, daher verzichten wir auf Bannerwerbung & Web-Analysetools! Um das Forum zu unterstützen bitten wir Euch über diesen Link: bei Amazon zu bestellen....
    Für Euch ist das nur ein Klick, uns hilft es das Forum langfristig und werbefrei für Euch zu betreiben! Vielen vielen Dank...
  • Kannst Du mal die Eigenschaften der Tabellen vergleichen?


    Ein ...

    SHOW CREATE TABLE 'testtable';

    SHOW CREATE TABLE 'items';

    ... müsste u.U. hier unterschiedliche Ausgaben haben?

  • Wie man in Post #5 im ersten Codeblock sehen kann ist der Unterschied der Charset.


    Code
    MariaDB [caching]> SHOW CREATE TABLE testtable;  
    +-----------+---------------------------------------------------------------------------------------------------------------------------------------------------+
    | Table     | Create Table                                                                                                                                      |
    +-----------+---------------------------------------------------------------------------------------------------------------------------------------------------+
    | testtable | CREATE TABLE `testtable` (
      `comment` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 |
    +-----------+---------------------------------------------------------------------------------------------------------------------------------------------------+
    1 row in set (0.00 sec)



    Ich habe diesen Thread nur als Hinweis gestartet.


    Für mich hab ich es so gelöst das ich items.comment auf utf8mb4 eingestellt habe. ;)

  • Datenschutz ist uns & Euch wichtig, daher verzichten wir auf Bannerwerbung & Web-Analysetools! Um das Forum zu unterstützen bitten wir Euch über diesen Link: bei Amazon zu bestellen....
    Für Euch ist das nur ein Klick, uns hilft es das Forum langfristig und werbefrei für Euch zu betreiben! Vielen vielen Dank...
  • So.

    Ich habe die Datenbank erstellt wie hier beschrieben. So wird das default Charset genommen, welches bei mir UTF8 ist.

    Wenn ich die Datenbank mit

    create database MyData CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

    erstelle, funtioniert alles.

  • Genau das mit dem Charset war mein Hintergedanke.

    Dieses Schlüsselchen ist halt in dem einen Charset enthalten und in dem anderen eben nicht.

    Also alles gut und alles richtig gemacht, soweit ich das als DB-Admin aus der Ferne sehen kann :wub:

  • Datenschutz ist uns & Euch wichtig, daher verzichten wir auf Bannerwerbung & Web-Analysetools! Um das Forum zu unterstützen bitten wir Euch über diesen Link: bei Amazon zu bestellen....
    Für Euch ist das nur ein Klick, uns hilft es das Forum langfristig und werbefrei für Euch zu betreiben! Vielen vielen Dank...
  • In 'src/qmapshack/gis/db/IDBMysql.cpp' wird keine Datenbank erstellt nur die Tabellen.


    Laut der Anleitung im Wiki muss der MySQL Admin die Datenbank selbst erstellen.

    Es braucht nur eine Erwähnung in diese Seite eingefügt werden.


    Übrigens ist hier ein lesenswerter Artikel zu UTF8 vs UTF8MB4.