Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: #1071 - Specified key was too long;
Forum PHP.pl > Forum > Bazy danych > MySQL
piotrostr
Witam.
Problem z tabelą po zmianie kodowania z latin2 na utf8, tabela wygląda następująco:
  1. CREATE TABLE `vb_rpgdata` (
  2. `anonymid` int( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT ,
  3. `anonymthreadid` int( 10 ) UNSIGNED NOT NULL ,
  4. `anonymgems` varchar( 255 ) NOT NULL ,
  5. `anonymplayers` text,
  6. `anonymgemuserids` varchar( 255 ) NOT NULL ,
  7. `anonymplayeruserids` varchar( 255 ) NOT NULL ,
  8. `anonymdatetime` int( 10 ) UNSIGNED NOT NULL ,
  9. `anonymstatus` SET( '0', '1' ) NOT NULL DEFAULT '1',
  10. `anonymsettings` varchar( 255 ) NOT NULL ,
  11. `anonymdescription` text,
  12. `anonymmaps` text,
  13. PRIMARY KEY ( `rpgid` ) ,
  14. KEY `anonoymthreadid` ( `anonymthreadid` , `anonymgemuserids` , `anonymplayeruserids` )
  15. ) ENGINE = MYISAM AUTO_INCREMENT =425

Przy próbie wrzucenia do bazy wywala błąd:
Cytat
MySQL zwrócił komunikat: Dokumentacja
#1071 - Specified key was too long; max key length is 1000 bytes

Oczywiście w sieci znalazłem rozwiązanie: http://bugs.mysql.com/bug.php?id=6604
które niestety nie działa po zastosowaniu.

Moje pytanie: Miał ktoś do czynienia z podobnym błędem i zna sposób na naprostowanie sprawy bez przepisywania kodu skryptu?
Dzięki z góry. Pozdrawiam.
dr_bonzo
Cos krecisz - wrzucilem to do bazy, w defaultowym UTFie - i oczywiscie nie dziala.
Dodalem dlugosc stringow przy definicji klucza
`anonymthreadid` -- bez
`anonymgemuserids` -- 255 [znakow, nie bajtow]
`anonymplayeruserids` -- 77 [-||-]
to bylo max co da sie osiagnac

255 + 77 = 332
332 * 3 + 4 = 999 czyli prawie max [1000 bajtow]


Po zmianie kodowania kolumn na latin_bin
mozesz robic klucze na calej dlugosci kolumn
ikubicki
wbrew nazwie utf8 przez mysql nie jest traktowany jako znak 8 bitowy winksmiley.jpg wiec 255 znakow w utfie to troche wiecej niz 500 bajtow winksmiley.jpg ale fakt, jako ze z nazwy pola wynika ze bedziesz tam trzymal id (zakladam ze liczby) to latin_bin jest jak najbardziej odpowiedni dla tych pol.
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-2024 Invision Power Services, Inc.