elfz Posted January 7, 2006 Report Share Posted January 7, 2006 Varbūt kādam ir idejas: uzdevums: nepieciešams dabūt datu bāzē longblob kolonnā 3mb lielu bināru failu no php. problēmas: - load_file dažādu tehnisku iemeslu dēļ lietot nevar; - tīrā veidā liekot datu bāzē, selects pārkāpj pāri db pieļaujamajām robežām (max_packet_size); - sadalot failu pa blokiem un grūžot datu bāzē ar update my_table set file_data = concat(file_data, '...') where id=... concat apraujas pie 1048576 baitiem, pēc kuriem atdod tikai NULL -- pieņemu, ka atkal tiek uzkāpts kādam konfigurācijas ierobežojumam. (concat vari pārbaudīt pats ar "select length(concat(repeat('A', 1048576), 'a'));" ) bet failu iekšā dabūt vajag, un no php. mysql nav mans, un parametru mainīšanu diez vai izdotos sarunāt, tā ka apvedceļa risinājums būtu labāk, kaut gan problēmas cēlonis mani arī interesē. Ir kādas idejas? Mainīt datu bāzes struktūru, glabāt failu failsistēmā, utml, šoreiz nebūs risinājums. Kaut kā taču ļaudis aizpilda 2gb blobus, vai ne tā? :D Link to comment Share on other sites More sharing options...
elfz Posted January 7, 2006 Author Report Share Posted January 7, 2006 Pēc neliela researcha šķiet, ka tomēr mysqlu piemānīt neizdosies: max_allowed_packet The maximum size of one packet. (..) You must increase this value if you are using big BLOB columns. It should be as big as the biggest BLOB you want to use. The protocol limits for max_allowed_packet is 16M in MySQL 3.23 and 2G in MySQL 4.0. Šķiet, tēmu var uzskatīt par slēgtu, tā arī īsti nesākušos. Mēģināšu runāt ar admini. Link to comment Share on other sites More sharing options...
Recommended Posts