update
This commit is contained in:
21
.claude/memory/feedback_mysql_polskie_znaki.md
Normal file
21
.claude/memory/feedback_mysql_polskie_znaki.md
Normal 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.
|
||||
Reference in New Issue
Block a user