ppeewee Skrevet 4. april 2008 Del Skrevet 4. april 2008 (endret) Hei, Jeg holder på å prøve å lage et bildegalleri. Bruker asp.net, C# og mysql for å få dette til. Men har et lite problem. Når jeg skal legge .jpg bildene ned i databsen som LongBLOB filer så fungerer ikke dette så veldig bra for store filer. Har lest at asp.net har som standard en max størrelse til 2mb. jeg la derfor inn disse linjene i web.config filen. <configuration> <system.web> <httpRuntime maxRequestLength="10000" useFullyQualifiedRedirectUrl="true" executionTimeout="45"/> </system.web> </configuration> Dette skal i alle fall gjøre at asp.net lar meg laste opp filer som er 10Mb. Jeg har prøvd å laste opp et bilde på 0.8Mb. Dette går fint og det blir lagt til som LongBLOB i databasen, men prøver jeg meg på en fil som er 2.67MB så får jeg følgende feilmelding. Packets larger than max_allowed_packet are not allowed. Mener at dette kommer fra databasen som heller ikke tilater filer over 2Mb, så spørsmålet er, vett noen her hvordan jeg kan øke dette tallet? Mvh ppeewee Endret 4. april 2008 av ppeewee Lenke til kommentar
Manfred Skrevet 4. april 2008 Del Skrevet 4. april 2008 Dette er fordi IIS er konfigurert med en maxlengde på en request... Det har ikke noe direkte med .net å gjøre, men innstillingene til IIS. Men: Å lagre bilder på flere MB i en longblob er jo å be om å ta livet av databasen, ytelsen på websiden, osv. En ekstremt dårlig idé! Lagre heller filnavnet i et tekstfelt, og lagre bildet i filsystemet. Lenke til kommentar
ppeewee Skrevet 4. april 2008 Forfatter Del Skrevet 4. april 2008 Dette er fordi IIS er konfigurert med en maxlengde på en request... Det har ikke noe direkte med .net å gjøre, men innstillingene til IIS. Men: Å lagre bilder på flere MB i en longblob er jo å be om å ta livet av databasen, ytelsen på websiden, osv. En ekstremt dårlig idé! Lagre heller filnavnet i et tekstfelt, og lagre bildet i filsystemet. Takker for kjapt svar. Har leset litt fram og tilbake på det, og någen er for å ha bilder som blob og andre mener det er ekstremt dårlig. så tenkte å prøve litt i alle fall. Er ekstremt dårlig med IIS, så kunne du forklart litt mer hvordan jeg setter opp maxlengde på requesten der ? takker mvh ppeewee Lenke til kommentar
___ Skrevet 4. april 2008 Del Skrevet 4. april 2008 Jeg vil fraråde deg å bruke databasen til å lagre ting som dette. Det er bare å be om problemer. En stor andel av problemstillingene som dukker opp på de DB-forum jeg av og til er innom, har å gjøre med lagring av bilder o.l. i BLOB-felter. Det er mange som sliter med dette. Å lagre filene på et filsystem, og bildeinformasjon i tabeller, er uansett løsningen jeg ville gått for. Den er dessuten portabel, noe som neppe kan sies hvis man binder seg til BLOB-støtten i et spesifikt RDBMS. Werner Lenke til kommentar
ppeewee Skrevet 4. april 2008 Forfatter Del Skrevet 4. april 2008 ser ka du mener. Litt av problemet er i oppgaven så er det definert at jeg skal bruke blob, så bør nok prøve å få det til først, og så heller dokumentere senere hvorfor dette er en dårlig ide. Litt av meningen også er at viss jeg legger bildene inn som blob så er det ikke mulig å kunne slette bildene fra filsystemet eller flytte på disse, noe som fører til at programet/websiden blir ødelagt. så har lyst å prøve å få til blob litt først, teste det og heller skrive en fyldig dokumentasjon på hvorfor blob ikke bør brukes til dette etterpå. takk for uansett Lenke til kommentar
Manfred Skrevet 4. april 2008 Del Skrevet 4. april 2008 (endret) btw: fant ut at feilmeldingen din var knyttet til mysql: By default, MySQL will only accept packets up to 64Kb in size. If you want to have attachments larger than this, you will need to modify your /etc/my.cnf as below. If you are using MySQL 4.x or newer, enter: [mysqld] # Allow packets up to 1M max_allowed_packet=1M If you are using an older version of MySQL, enter: [mysqld] # Allow packets up to 1M set-variable = max_allowed_packet=1M Men jeg vil gjenta at dette er en utrolig dårlig idé! Endret 4. april 2008 av Manfred Lenke til kommentar
ppeewee Skrevet 4. april 2008 Forfatter Del Skrevet 4. april 2008 btw: fant ut at feilmeldingen din var knyttet til mysql: By default, MySQL will only accept packets up to 64Kb in size. If you want to have attachments larger than this, you will need to modify your /etc/my.cnf as below. If you are using MySQL 4.x or newer, enter: [mysqld] # Allow packets up to 1M max_allowed_packet=1M If you are using an older version of MySQL, enter: [mysqld] # Allow packets up to 1M set-variable = max_allowed_packet=1M Men jeg vil gjenta at dette er en utrolig dårlig idé! Takker for svar. Skal prøve å endre dette senere. Jeg skal lese litt mer om dette, men utifra det dere sier så kan det se ut som jeg må endre framgangsmåten min ja. Siden jeg faktisk skriver en oppgave, og oppgaven er å lagre bilder som blob i en database, så må jeg i alle fall få vist at det er mulig og at jeg kan lagre bilder opp mot 4mb. Når jeg har gjort dette, så kommer jeg nok til å gå over til deres løsning med å legge pathen i databasen og lagre selve filen i filsystemet. takk til alle som har svart. (spør nok mer viss jeg ikke får det til ) mvh ppeewee Lenke til kommentar
ppeewee Skrevet 4. april 2008 Forfatter Del Skrevet 4. april 2008 hmm, gikk dit jeg hadde innstalert MySQL Server 5.0. Er ingen mappe som hetter etc, og heller ingen fil så hetter my.cnf. Fant my.ini og prøde å sette [mysqld] # Allow packets up to 4M max_allowed_packet=4M men det hjalp ikke. får fortsatt samme feilmelding Lenke til kommentar
blackbrrd Skrevet 4. april 2008 Del Skrevet 4. april 2008 (endret) Hvorfor skulle det å lagre bilder/data i databasen ta livet av den? Gjør dette på jobben og har ikke noe problem med å oppnå 25mbyte/s write performance (som er maks hastighet på lokalnettet hvor vi testet)... Hvis bildet skal leses ofte så blir det cachet av filsystemet... (Gjelder ihvertfall postgres). Ulempen er at man må f.eks skrive en servlet som streamer dataene til klienten istedetfor å laste alt opp i minnet som man vanligvis gjør. Fordelen ved å lagre dataene i databasen er at du får acid compliance. Det får du ikke ved lagring i filsystemet. (Nyttig når du tar backup, hvis strømmen går, e.l.) Endret 4. april 2008 av blackbrrd Lenke til kommentar
ppeewee Skrevet 4. april 2008 Forfatter Del Skrevet 4. april 2008 Hvorfor skulle det å lagre bilder/data i databasen ta livet av den? Gjør dette på jobben og har ikke noe problem med å oppnå 25mbyte/s write performance (som er maks hastighet på lokalnettet hvor vi testet)... Hvis bildet skal leses ofte så blir det cachet av filsystemet... (Gjelder ihvertfall postgres). Ulempen er at man må f.eks skrive en servlet som streamer dataene til klienten istedetfor å laste alt opp i minnet som man vanligvis gjør. Fordelen ved å lagre dataene i databasen er at du får acid compliance. Det får du ikke ved lagring i filsystemet. (Nyttig når du tar backup, hvis strømmen går, e.l.) Godt å høre at noen faktisk mener dette er mulig Men må få spørre, hvordan klarer du å lagre store bilder i databasen ? har du måtte sotte opp maks opplastning? Lenke til kommentar
Manfred Skrevet 4. april 2008 Del Skrevet 4. april 2008 restartet du mysql etter å ha endret innstillingene da? Lenke til kommentar
blackbrrd Skrevet 4. april 2008 Del Skrevet 4. april 2008 Bruker postgresql/tomcat så det er ikke akkurat de samme innstillingene, men lurer litt på om det var noe vi stillte på i tomcat. Lenke til kommentar
ppeewee Skrevet 5. april 2008 Forfatter Del Skrevet 5. april 2008 restartet du mysql etter å ha endret innstillingene da? Jada, jeg har restartet serveren. prøvde begge kommandoene dine den for 4.x og nyere og den gamle. Når jeg prøvde den gamle å glømte = tegnet så fikk jeg ikke startet serveren, så der kan jo se ut som det er noe der skal skrive. men syns det er litt rart at jeg ikke finner etc folderen og at filen min hetter my.ini istede for my.cnf Lenke til kommentar
ppeewee Skrevet 5. april 2008 Forfatter Del Skrevet 5. april 2008 Da fikk jeg endelig fikset problemet. Inni i mappa MySql Server 5.0 har jeg flere .ini filer. my.ini, my-huge.ini, my-large.ini osv osv. i 4-5 av de filene så var det en max_packet_size = 1M. Satt de opp til 16M. i tillegg til det så måtte jeg sette inn [mysqld] # Allow packets up to 16M max_allowed_packet=16M i my.ini. så virket det fint takk for all hjelpen. og viss noen har lyst å legge inn flere eksempler på hvorfor/hvorfor ikke legge inn filene i blob så hadde det vert topp. mvh ppeewee Lenke til kommentar
blackbrrd Skrevet 5. april 2008 Del Skrevet 5. april 2008 FOR: Acid compliance IMOT: Litt overhead Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå