Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MYSQL]Zapytanie mysql błąd z CONCAT
Forum PHP.pl > Forum > Przedszkole
arzach
Witam mam takie zapytanie
  1. SELECT CONCAT( REPEAT( ' ', (COUNT(parent.name) - 1) ), node.name) AS name
  2. FROM nested_category AS node,
  3. nested_category AS parent
  4. WHERE node.lft BETWEEN parent.lft AND parent.rgt
  5. GROUP BY node.name
  6. ORDER BY node.lft;

i gdy je wykonuje wywala mi taki błąd

Kod
#1267 - Illegal mix of collations (utf8_unicode_ci,COERCIBLE) and (latin2_general_ci,IMPLICIT) for operation 'concat'


Wie ktoś czemu tak sie dzieje ?
erix
Cytat
Illegal mix of collations

Porównywane kolumny mają zadeklarowane różne zestawy znaków.
arzach
Zrobilem przyklad z tej strony
http://dev.mysql.com/tech-resources/articl...hical-data.html

Jak moge sie pozbyć tego błedu ?
erix
Masz w phpMyAdmin okno tabeli. Tam masz wyświetlone kolumny. W którymś polu jest zestaw znaków.

Musisz doprowadzić do takiej sytuacji, aby obie podstawione przez Ciebie do concat używały tego samego kodowania.
arzach
No przecierz są takie same. Chodzi o jedną kolumne name i tam mam Metoda porównywania napisów latin2_general_ci
Kod
category_id int(11)   Nie  auto_increment              
name varchar(20) latin2_general_ci  Nie                
lft int(11)   Nie                
rgt int(11)   Nie


A tutaj kod który dodaje tą tabele
  1. CREATE TABLE category(
  2. category_id INT AUTO_INCREMENT PRIMARY KEY,
  3. name VARCHAR(20) NOT NULL,
  4. parent INT DEFAULT NULL);



Pomoże ktoś ?
Daimos
w pierwszej masz latin2_general_ci
w drugiej kodowanie utf z tego co widac wczesniej
musisz edytowac te pola i zrobic identycznie
arzach
Mam tylko tak
name varchar(20) latin2_general_ci
wiec co mam zmienic ?
Daimos
  1. ALTER TABLE `category` CHANGE `name` `name` VARCHAR( 20 ) CHARACTER SET latin2 COLLATE latin2_general_ci NOT NULL
arzach
Nic to nie dało dalej to samo

.
erix
Dla dwóch kolumn w CONCAT ustaw te same zestawy znaków w PMA. Nieważne, czy latin, czy utf, ale mają być jednakowe.
arzach
Ale to jest jedna i ta samu kolumna ale poprzedzona aliasem
  1. CONCAT( REPEAT( ' ', (COUNT(parent.name) - 1) ), node.name) AS name

gdzie parent to alias i node tej samej kolumny
Wiec jak mam to zrobić ?

Pomoże ktoś ?

.
Daimos
ustaw dla tych pol to samo kodowanie, przeciez od poczatku Ci piszemy
nie wiesz jak to zrobic? to w phpmyadmin tez mozna
struktura-> edytujesz pole i wybierasz kodowanie
w obydwu ma byc takie samo
nie pisz ze pola sa identyczne, bo jakby byly, to by dzialalo, a wyraznie pisze w bledzie, ze kodowanie jest rozne snitch.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.