This commit is contained in:
2026-04-22 13:21:14 +02:00
parent 8ef527e9ab
commit 8f43d0b8d9
8 changed files with 600 additions and 4 deletions

View File

@@ -0,0 +1,21 @@
---
name: Polskie znaki w mysql LIKE przez shell
description: LIKE z polskimi znakami (szczególnie ł) w zapytaniach mysql uruchamianych z git-bash nie zawsze dopasowuje — użyj hex-encoded pattern w CONCAT
type: feedback
originSessionId: 6b490a59-53d2-4351-8049-2be9d065ec83
---
Przy filtrowaniu klientów w `/wygeneruj-projekty` — jeśli imię/nazwisko zawiera polskie znaki (szczególnie `ł`, ale też `ę`/`ń` w niektórych kombinacjach), LIKE w postaci `WHERE oa.name LIKE '%Małgorzata%'` przekazane przez `mysql.exe -e "..."` z git-bash może zwracać **zero wyników**, mimo że rekord istnieje w bazie.
**Why:** shell/terminal/console transkoduje polskie znaki niespójnie między git-bash a mysql.exe (ConvertTo z UTF-8 na code page Windows i z powrotem). Charset kliencki `--default-character-set=utf8mb4` nie zawsze to naprawia. Rekord w bazie jest poprawnie UTF-8, ale pattern LIKE po przejściu przez shell zawiera inne bajty.
**How to apply:** Jeśli zapytanie dopasowania klienta po nazwisku zwraca 0 wyników, a jesteś pewny że rekord istnieje — ponów z hex-encoded wzorcem:
```sql
-- Zamiast: WHERE oa.name LIKE '%Stępińska%'
-- Użyj:
WHERE oa.name LIKE CONCAT('%', 0x5374C4997069C584736B61, '%')
```
Hex wygenerować w shell: `printf 'Stępińska' | od -An -tx1 | tr -d ' \n'``5374C4997069C584736B61`.
Lub użyj samego fragmentu bez polskich znaków (np. tylko nazwisko `%tarnowska%`, `%fundakowska%`) gdy to wystarcza do jednoznacznego dopasowania.