Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> #1071 - Specified key was too long;, max key length is 1000 bytes
piotrostr
post
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 18.02.2007

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
dr_bonzo
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
ikubicki
post
Post #3





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 30.05.2008

Ostrzeżenie: (0%)
-----


wbrew nazwie utf8 przez mysql nie jest traktowany jako znak 8 bitowy (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) wiec 255 znakow w utfie to troche wiecej niz 500 bajtow (IMG:http://forum.php.pl/style_emoticons/default/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.

Ten post edytował ikubicki 30.05.2008, 13:44:20
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 15:56