Srodne teme
Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Mysql ogranicenja

[es] :: MySQL :: Mysql ogranicenja

[ Pregleda: 1992 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

zikaa
Zivorad Antonijevic
Beograd

Član broj: 10078
Poruke: 107
*.adsl.beotel.net.

Sajt: zantonijevic.com


+1 Profil

icon Mysql ogranicenja05.03.2009. u 16:31 - pre 183 meseci
pozdrav,

imam sledeci problem, skript se izvrsava na jednom racunaru, a baza je na drugom,
upitom punim tabelu kreiranu sa :

CREATE TABLE `table` (
`listId` int(10) unsigned NOT NULL DEFAULT '0',
`hash` smallint(5) unsigned NOT NULL,
`data` longtext,
`broj` int(10) unsigned NOT NULL,
PRIMARY KEY (`listId`,`hash`)
)

a za ispis koristim pogled kreiran sledecim upitom.

CREATE VIEW `table_sum` AS
SELECT `table`.`listId` AS `listId`,
GROUP_CONCAT(`table`.`data` SEPARATOR ',') AS `data`,
SUM(`table`.`broj`) AS `broj` FROM `table`
GROUP BY `table`.`listId`;

Pogled nije neophodan, al eto zbog konkurentnosi postoji tu.

E sad polje data u tabeli se odjednom zakucalo, na neku sifru od oko 30 000 bajtova i nece dalje, a data u pogledu na oko 400 000. To je ispod minimuma za duzinu polja kojim su definisane tabele.

Upiti se izvrsavaju bez greske (koristim PHP, i mysql_error() funkciju za proveru), medjutim tabela se ne puni vise.

Pritom, isti program sa servera na kome je mysql nema takvih problema.

Da li neko zna koje ogranicenje u mysql podesavanjima da trazim da promenim, da prevazidjem ovaj problem ?


 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.xdsl.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Mysql ogranicenja05.03.2009. u 17:26 - pre 183 meseci
moram da priznam da te nisam bas shvatio, tj ne kapiram tacno koji problem imas ...

Citat:
polje data u tabeli se odjednom zakucalo, na neku sifru od oko 30 000 bajtova i nece dalje

...
Citat:
medjutim tabela se ne puni vise.


sta znaci tabela se ne puni vise? da li to znaci da ti vise ne dodajes podatke u tabelu ili znaci da ako probas da dodas podatak u tabelu da dobijes gresku?

sto znaci "polje zakucalo na sifru od 30K i nece dalje"?
kako si izmerio da je bas 30000?
da li je 30000 bajtova ili karaktera?
da li dobijes i koju gresku ako i kako pokusas da upises u to polje veci podatak?
koja verzija mysql-a? na kom operativnom sistemu se nalazi?
koja verzija php-a? na kom operativnom sistemu se nalazi?
sta je default character set / kolacija za bazu?

longtext moze da bude maximalne duzine 4294967296 bajtova sto znaci da, ako ti je character set utf8, na primer, maximalna duzina je 1431655765 karaktera .. kako god okrenes to je mnoooogo vise od 30K ... ako je u pitanju obican text a ne longtext onda je limit 65536 bajtova iliti 21845 karaktera za utf8 ... sto je malo blize tvom limitu od 30K tako da proveri jos jednom da li je u pitanju longtext.

sta ti vraca:

Code:

mysql> show global variables like 'max_allowed_packet';
mysql> show variables like 'max_allowed_packet';



 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.xdsl.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Mysql ogranicenja05.03.2009. u 17:31 - pre 183 meseci
jos jedna sitnica, sta ti u php.ini stoji za "odbc.defaultlrl"?

nemam pojma zasto to ima veze sa bilo cim, ali u nekim verzijama php-a, velicina polja koju php vrati za bilo koji konektor (mysql, odbc, mssql, pgsql, oracle ...) zavisi od vrednosti ovog polja ... tako da ovde ili moras da stavis neku veliku cifru ili 0 .. moraces da probas...
 
Odgovor na temu

Shinhan
PHP programmer
Subotica

Član broj: 12327
Poruke: 372
91.150.127.*

Jabber: shinhan@elitesecurity.org
ICQ: 400847988


+4 Profil

icon Re: Mysql ogranicenja06.03.2009. u 08:35 - pre 183 meseci
Ako sam dobro razumeo, izgleda je "group_concat_max_len" varijabla stavljena na 30.000. Ta varijabla je takođe ograničena veličinom max_allowed_packet. Ovo sam pročitao na GROUP_CONCAT stranici u manualu.
Jedno rešenje je naravno povećavanje te varijable.

Nego, kako to da ti nije dovoljno TEXT (64K) ili MEDIUMTEXT(16M)? Naročito u ovom slučaju kada spajaš više takvih polja (desetine? stotine?).
"Common sense is not so common." - Voltaire
 
Odgovor na temu

zikaa
Zivorad Antonijevic
Beograd

Član broj: 10078
Poruke: 107
91.148.81.*

Sajt: zantonijevic.com


+1 Profil

icon Re: Mysql ogranicenja06.03.2009. u 10:16 - pre 183 meseci
Hvala na brzom odgovoru,

pogresno sam ukucao, nije sifra nego cifra :)

evo ovako stoji:
30 000 karaktera je u pitanju, character set je latin1 (jel onda to isto sto i 30 000 bajtova ?)

mysql verzija je 5.1.30-log , a OS je Fedora release 8

mysql> show global variables like 'max_allowed_packet';
max_allowed_packet | 1048576

isto se dobije i sa
mysql> show variables like 'max_allowed_packet';

mysql> show variables like 'group_concat%';
group_concat_max_len | 1024

u php.ini fajlu stoji
odbc.defaultlrl = 4096.

a sadrzaj tabele izgleda ovako : SELECT hash, LENGTH( data ) AS broj FROM `tabela`

hash broj
0 31500
1 31356
2 31451
3 30930
4 31036
5 31062
6 30922
7 31054
8 31150
9 31099
10 31527
11 31585
12 31320

 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.xdsl.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Mysql ogranicenja06.03.2009. u 11:10 - pre 183 meseci
Citat:

30 000 karaktera je u pitanju, character set je latin1 (jel onda to isto sto i 30 000 bajtova ?)


da

Citat:

max_allowed_packet | 1048576
group_concat_max_len | 1024
odbc.defaultlrl = 4096.


odbc.defaultlrl ima veze sa citanjem podataka, ponekad, length() bi vratio ok tako da nije to ...
max_allowed je ok (doduse 1M je prilicno malo ako radis sa ovolikim blobovima ali ..)
group_concat ces morati da povecas, drasticno, ako zelis da pravis tu tabelu upitom koji si naveo

Citat:

a sadrzaj tabele izgleda ovako : SELECT hash, LENGTH( data ) AS broj FROM `tabela`

hash broj
0 31500
0


super, ali i dalje nisi odgovorio sta ne radi... da li ti ne radi dodavanje novog sloga u tabelu, veceg polja u tabelu? dakle "sta tacno ne radi"

sta ti kaze:
Code:

INSERT INTO tabela (data) values ( REPEAT('X', 70000) );



 
Odgovor na temu

Igor Gajic

Član broj: 93194
Poruke: 747
79.101.171.*



+987 Profil

icon Re: Mysql ogranicenja06.03.2009. u 16:39 - pre 183 meseci
Do kojeg broja ti je stiglo polje hash ? Da li ide sekvencijalno?

Po definiciji tabele hash ti ide od 0 do 65535, tako da si veci deo hash-a popunio.

Moguce je da pokusavas da ubacis vecu vrednost za hash nego sto si definisao plus hash ti je definisan kao primary key tako da su sve vrednosti razlicite.
 
Odgovor na temu

[es] :: MySQL :: Mysql ogranicenja

[ Pregleda: 1992 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.