Fórumok
Két LXD konténerben telepítettem ugyanazt az alkalmazást. Egyik maradb, másik mysql.
Mariadb a helyes karakterkódolással importál a táblákba:
MariaDB [(none)]> SHOW VARIABLES LIKE '%char%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
A mysql, nem 4 biten tárolja az ékezetes karaktereket, hibás az import.
mysql> SHOW VARIABLES LIKE '%char%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.10 sec)
A táblák üresek, nincs bennük adat, ha valami elszáll nem gond. Sokat olvasgattam, de nem találtam meg, hogyan lehetne az értékeket mindenhol utf8mb4-re állítani. Sajnos sql-ben nem vagyok járatos...
Hozzászólások
Eszerint par lepesben megoldhato: https://dba.stackexchange.com/questions/8239/how-to-easily-convert-utf8… :)
Köszönöm a segítséged, ez alapján menni fog.
Ha nem akarsz emojit, kanjit vagy rovásírást, akkor az utf8 is jó neked (1-3 bájt/karakter). Viszont a latin1 nagyon nem jó.
És hogy mi ennek az oka? Az, hogy ha valami nincs explicit megadva, akkor ott valamiféle alapértelmezés érvényesül. (Ami akár Siemens EBCDIC is lehet, ha a sors nincs veled.)
Basszus, utánaolvastam EBCDIC-nek. Nagyon kegyetlen. Szerencsére nem ilyennel van dolgom.
Amiből importálsz, abban be van állítva karakterkódolás? Például:
CREATE TABLE `tarca` (
`az` int(11) NOT NULL,
`penz` double NOT NULL,
`leiras` varchar(100) COLLATE utf8mb4_hungarian_ci NOT NULL,
`datum` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_hungarian_ci;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Igen, az rendben van. Nem is tudom módosítani, mert külső db, nincs csak hozzáférési jogom.
Sajnos a hiba nem az adatbázisban van. Ugyanaz az alkalmazás másként viselkedik x64 és arm architektúrán. Az alkalmazás fejlesztőinek kell jeleznem a problémát...
A témát így lezárom, mert innen offtopic lenne a dolog.
Ha valakit érdekel leírom ide is.