DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

Fórum DevMedia


Autor
Mensagem
WUALACE CHAVES DA SILVA
 

País: Brasil
Estado: RJ
Cidade: São João de Meriti
Mensagens: 6
 Postado em: 2/2/2012 1:14:36 AM

Tenho uma rotina que salva arquivos PDFs num campo MediumBLOB do MYSQL, o problema é que só consigo gravar arquivos de até 470kb, mais do que isso, dá o seguinte erro:

Tentativa de leitura ultrapassou o fim do fluxo.
Descrição: Ocorreu uma exceção não tratada durante a execução da atual solicitação da Web. Examine o rastreamento de pilha para obter mais informações sobre o erro e onde foi originado no código.

Detalhes da Exceção: System.IO.EndOfStreamException: Tentativa de leitura ultrapassou o fim do fluxo.

[EndOfStreamException: Tentativa de leitura ultrapassou o fim do fluxo.]
MySql.Data.MySqlClient.MySqlStream.ReadFully(Stream stream, Byte[] buffer, Int32 offset, Int32 count) +88
MySql.Data.MySqlClient.MySqlStream.LoadPacket() +70

[MySqlException (0x80004005): Reading from the stream has failed.]
MySql.Data.MySqlClient.MySqlStream.LoadPacket() +265
MySql.Data.MySqlClient.MySqlStream.ReadPacket() +16
MySql.Data.MySqlClient.NativeDriver.GetResult(Int32& affectedRow, Int32& insertedId) +73
MySql.Data.MySqlClient.Driver.GetResult(Int32& affectedRows, Int32& insertedId) +17
MySql.Data.MySqlClient.Driver.NextResult(Int32 statementId) +85
MySql.Data.MySqlClient.MySqlDataReader.NextResult() +108

[MySqlException (0x80004005): Fatal error encountered attempting to read the resultset.]
MySql.Data.MySqlClient.MySqlDataReader.NextResult() +352
MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior) +750

[MySqlException (0x80004005): Fatal error encountered during command execution.]
MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior) +1071
MySql.Data.MySqlClient.MySqlCommand.ExecuteNonQuery() +36
trabalhos_novo.cmdEnviar_Click(Object sender, EventArgs e) in D:\Projetos Net 2.0\cbac2012\trabalhos_novo.aspx.vb:244
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +111
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +110
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565



Abaixo o código que estou executando:


EFETUA UPLOAD DO ARQUIVO
Dim strTipo As String = fileUpload1.PostedFile.ContentType
Dim intTamanho As Integer = System.Convert.ToInt32(fileUpload1.PostedFile.InputStream.Length)
Dim imageBytes(fileUpload1.PostedFile.InputStream.Length) As Byte
fileUpload1.PostedFile.InputStream.Read(imageBytes, 0, imageBytes.Length)

dim isql as string = insert into trabalhos_anexos(id_trabalho, arquivo, tamanho, tipo)
isql += values (@id_trabalho, @arquivo, @tamanho, @tipo)

Dim BasedeDados As New MySqlConnection(ConfigurationManager.ConnectionStrings(LocalMySqlServer).ToString())
Dim Comando As New MySqlCommand(isql, BasedeDados)

Comando.Parameters.Add(@id_trabalho, MySql.Data.MySqlClient.MySqlDbType.Int32).Value = Id
Comando.Parameters.Add(@arquivo, MySql.Data.MySqlClient.MySqlDbType.MediumBlob).Value = imageBytes
Comando.Parameters.Add(@tamanho, MySql.Data.MySqlClient.MySqlDbType.Int32).Value = intTamanho
Comando.Parameters.Add(@tipo, MySql.Data.MySqlClient.MySqlDbType.VarChar, 200).Value = strTipo

BasedeDados.Open()
Comando.ExecuteNonQuery() O Erro ocorre aqui!

Comando.Dispose()
Comando = Nothing
BasedeDados.close
BasedeDados = Nothing

A princípio pensei que pudesse ser o max_allowed_packet, mas já verifiquei e tá setado para 16MB.

Detalhe: O banco de dados está em uma hospedagem profissional da Locaweb.

Desde já agradeço a quem puder me dar uma luz!
BRUNO LEANDRO
 
 


País: Brasil
Estado: SP
Cidade: Tupã
Mensagens: 205
 Postado em: 13/5/2012 3:47:03 AM
aparentemente o arquivo pode estar ultrapassando o tamanho do campo, voce poderia criar um campo LONGBLOB e verificar se o erro persiste. caso o erro persistir verificamos outras possibilidades

 
WUALACE CHAVES DA SILVA
 

País: Brasil
Estado: RJ
Cidade: São João de Meriti
Mensagens: 6
 Postado em: 13/5/2012 3:51:58 PM
Obrigado pela resposta Bruno,

Testei o código localmente e tudo está funcionando perfeitamente, mesmo com o campo mediumblob. Acredito que seja alguma limitação do meu provedor de hospedagem mesmo.

Valeu!

 
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2012 - Todos os Direitos Reservados a web-03