banjalukaforum.com
https://banjalukaforum.com/

SQL Collation
https://banjalukaforum.com/viewtopic.php?f=18&t=62872
Stranica 1 od 1

Autoru:  sagittarius [ 26 Mar 2013, 23:26 ]
Tema posta:  SQL Collation

Pozdrav, imam problem, kreirao sam tabele medjutim zaboravio sam neke stvari, po defaultu sam napravio bazu (collation je bio latin1)
kreirao sam preko 20 tabela (svaka sada ima preko 250 atributa, raznih atributa od varchar(45), varchar(255), double(3,2), int(11) itd da ne nabrajam sve) treba mi sve u UTF-8 formatu, ja sam isao alter shema, collation prebacio na utf-8 default collation, zatim svaku tabelu prebacio na utf-8, i to je sad uredno, kad kreiram novi atribut on je u utf-8, ali problem su ovi stari, preko 5000 atributa mi je na ostalno na latin1 a treba mi sve na utf-8, rucno ne bi za 3 mjeseca isprebacivao sve a kad pokrenem skriptu:

ALTER TABLE ime_tabele CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci
izbaci mi error 1118. Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. You have to change some colums to TEXT or BLOBs.
da li je to u pitanju ovi varchar(255), ja sam im sam dodijelio tu vrijednost 255 ako je do toga opet problem, 80% atributa po tabeli su varchar , opet bi mi trebala vjecnost...

bilo kakav prijedlog?

Unaprijed zahvalan.

Autoru:  NiZ [ 27 Mar 2013, 06:59 ]
Tema posta:  Re: SQL Collation

ALTER... MODIFY?

http://www.mysqlperformanceblog.com/200 ... cter-sets/

Autoru:  sagittarius [ 27 Mar 2013, 13:22 ]
Tema posta:  Re: SQL Collation

E prijatelju hvala na odgovor, radi modify savrseno ako ces ici jednu po jednu to sam prvo i probao, medjum kod modify je problem sto moras sve kolone izmjenjati rucno 1 by 1, ako selektujem sve odjednom izbaci mi taj error o row size. (logic go home you're drunk) da jedan pojedan a neda sve odjednom...

ja izvezem bazu u .sql otvorim pomocu notepad i
find all: latin1
replace all: utf8
save
kad je uvozim bilo preko workbencha, phpmyadmin izbaci mi taj isti error da su neke kolone preduge.

zatim sam otisao na dev.mysql.com i nasao:

For example, utf8 characters require up to three bytes per character, so for a CHAR(255) CHARACTER SET utf8 column, the server must allocate 255 × 3 = 765 bytes per value. Consequently, a table cannot contain more than 65,535 / 765 = 85 such columns.

ne mozes vjerovati 85*3=255 :angry4:

onda sam opet otisao i .sql fajl otvorio pomocu text editora
find all 255:
replace all: 254
save
uradio import i savrseno i bezprijekorno radi, sve je table default kad alter tabelu pa pogledam kolone.

p.s. koliko sam shvatio ukoliko samo modify jednu po jednu on nju spusti na maximum granicu bita dozvoljenih po utf8 zapisu i uspije je konvertovati, medjutim ako selekujes sve i pokusas odjednom opet izbaci error da to sto prelazi varchar 255 (za 1 karakter) bilo potrebno prebaciti u blob ili text, ali opet bi mi trebala vjecnost zato sto cine vecinu. Uglavnom ovako moze i radi najnormalnije.

Autoru:  NiZ [ 28 Mar 2013, 07:36 ]
Tema posta:  Re: SQL Collation

Bitno da si rijesio, zanimljivo "citanje" :)

Meni bi prvo palo na pamet napisati php skriptu koja bi kupila tabelu po tabelu u nekoj petlji i izmijenjala.

Sad sam radoznao, posto sam prije nekoliko dana citao neki clanak o PL/SQLu (o kome nemam pojma :) ) pa me zanima da li bi se pomocu njega mogla napisati procedura koja bi se izvrsavala na bazi te u slucaju 5 000 tabela, smanjilo vrijeme prepravljanja?
Pitanje iz radoznalosti za nekoliko high level DB developera sa foruma :)

Autoru:  r3d [ 16 Apr 2013, 13:22 ]
Tema posta:  Re: SQL Collation

Ja sam uveo praksu da koristim TEXT polje umjesto varchar, za sve vece od nekih 50 karaktera, bas iz tih nekih tehnickih razloga. Vjerovatno je sporije, ali kad moras misliti svaki put koliko si polje stavio u tabeli kad programiras interfejs, vrijedi, bar za male aplikacije.

Stranica 1 od 1 Sva vremena su u UTC [ DST ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/