Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
VDL Aprendiz
Registrado: Sábado, 7 de Mai de 2005 Mensagens: 170
|
Enviada: Qua Abr 03, 2013 10:34 pm Assunto: Delphi x Mysql Urgente |
|
|
Pessoal,
Sempre que os clientes abrem o meu sistema, dependendo do número de clientes abertos, o mysql me retorna a seguinte mensagem: "Too many connections".
Sei que quer dizer que há muitas conexões acessando a base ao mesmo tempo, por padrão, o Mysql configura o máximo de conexões para 100.
O problema que essa mensagem as vezes ocorre com até 2 clientes abertos.
Tenho acompanha atraves do adm do mysql e verifiquei que o número de conexões vai aumentando a cada consulta etc.
Já aumentei número de conexão, mas acho que isto não é correto.
O que eu posso fazer para resolver esse problema? Alguém já teve essa experiência?
Estou usando DBX4 do D2007. |
|
Voltar ao Topo |
|
|
marcelo_tux Aprendiz
Registrado: Terça-Feira, 2 de Abril de 2013 Mensagens: 230 Localização: São José do Rio Preto - SP
|
Enviada: Qui Abr 04, 2013 8:24 am Assunto: Re: Delphi x Mysql Urgente |
|
|
Bom dia.
Olha nunca tive essa mensagem, tenho um sistema em delphi com mysql, onde 50 usuarios acessam o banco de dados ao mesmo tempo, e nunca recebi essa mensagem.
Descreva sua situação, como qual maquina roda seu banco, que versão do mysql voce usa, como voce faz a conexão com o banco etc..... _________________ Porgramador Delphi - Mobile |
|
Voltar ao Topo |
|
|
joemil Moderador
Registrado: Quinta-Feira, 25 de Março de 2004 Mensagens: 9099 Localização: Sinop-MT
|
Enviada: Qui Abr 04, 2013 8:35 am Assunto: |
|
|
tb nao tenho esse problema. meu sistema abre 2 conexoes ao banco ao mesmo tempo (ZConnection (Seoz), e um SQLConnection (DBX) pra comunicacao com FastReport - ainda tiro ele - o DBX)
e sao mais de 20 usuarios ao mesmo tempo (por enqto, mais esse numero tende a crescer pra 50 mais ou menos) _________________ <b>SEMPRE COLOQUE [RESOLVIDO] NO SEU POST</b>
Enviar imagens: http://tinypic.com/ |
|
Voltar ao Topo |
|
|
CesarRocha Mestre
Registrado: Segunda-Feira, 30 de Mai de 2011 Mensagens: 794 Localização: São Paulo - SP
|
Enviada: Qui Abr 04, 2013 8:55 am Assunto: Re: Delphi x Mysql Urgente |
|
|
VDL escreveu: | Pessoal,
Tenho acompanha atraves do adm do mysql e verifiquei que o número de conexões vai aumentando a cada consulta etc.
Já aumentei número de conexão, mas acho que isto não é correto.
|
Achei curiosa essa afirmação... será que você não está abrindo/criando conexões com o banco de dados e esquecendo de fecha/liberar elas?
~Bye |
|
Voltar ao Topo |
|
|
joemil Moderador
Registrado: Quinta-Feira, 25 de Março de 2004 Mensagens: 9099 Localização: Sinop-MT
|
Enviada: Qui Abr 04, 2013 8:59 am Assunto: Re: Delphi x Mysql Urgente |
|
|
CesarRocha escreveu: | VDL escreveu: | Pessoal,
Tenho acompanha atraves do adm do mysql e verifiquei que o número de conexões vai aumentando a cada consulta etc.
Já aumentei número de conexão, mas acho que isto não é correto.
|
Achei curiosa essa afirmação... será que você não está abrindo/criando conexões com o banco de dados e esquecendo de fecha/liberar elas?
~Bye |
tb acho isso _________________ <b>SEMPRE COLOQUE [RESOLVIDO] NO SEU POST</b>
Enviar imagens: http://tinypic.com/ |
|
Voltar ao Topo |
|
|
VDL Aprendiz
Registrado: Sábado, 7 de Mai de 2005 Mensagens: 170
|
Enviada: Qui Abr 04, 2013 9:52 pm Assunto: |
|
|
Pessoal, obrigado pela atenção e desculpe pela demora em responder.
Estou usando DBExpress com ClientDataSet e o servidor é Linux, para monitorar as tabelas uso Mysql Adminitrator.
E através do administrator do Mysql no Server Connections verifico que ao abrir o sistema já me aparece cerca de sete conexões, se abro um form é estabelecido mais uma ou duas conexões depende do número de tabela usada no form, porém quando fecho o mesmo, a conexão não é encerrada.
Qual pode ser o problema, se toda vez que fecho o form fecho as tabelas também, tem alguma configuração a ser feita nos componentes do Delphi ou no próprio Mysql. |
|
Voltar ao Topo |
|
|
joemil Moderador
Registrado: Quinta-Feira, 25 de Março de 2004 Mensagens: 9099 Localização: Sinop-MT
|
Enviada: Sex Abr 05, 2013 9:02 am Assunto: |
|
|
posta o codigo q vc usa pra abrir as tabelas.
pra cada form, vc ta criando um novo sqlConnection? é ele quem faz a conexao ao banco.
aqui uso so um sqlConnection (no meu caso, ZConnection) no datamodule principal, e todas as querys sao ligadas a ele _________________ <b>SEMPRE COLOQUE [RESOLVIDO] NO SEU POST</b>
Enviar imagens: http://tinypic.com/ |
|
Voltar ao Topo |
|
|
VDL Aprendiz
Registrado: Sábado, 7 de Mai de 2005 Mensagens: 170
|
Enviada: Sex Abr 05, 2013 1:30 pm Assunto: |
|
|
Joemil, obrigado pela atenção.
Uso um damodule também com um únicos SQLConnection e para acesso as tabelas os seguintes componentes : SqlDatasete, DataSetProvider, ClientDataSet e um DataSource em cada form ligado ao ClientDataSet.
No DataModule tenho as seguintes procedures e function
Código: | procedure TDmBase.DataModuleCreate(Sender: TObject);
var
I: Integer;
begin
for I := 0 to ComponentCount - 1 do
if Components[I] is TClientDataSet then
begin
TClientDataSet(Components[I]).BeforePost := SetID;
TClientDataSet(Components[I]).OnReconcileError := GetError;
end;
end;
procedure TDmBase.GetError(DataSet: TCustomClientDataSet; E: EReconcileError;
UpdateKind: TUpdateKind; var Action: TReconcileAction);
begin
showmessage('Um Erro Ocorreu ao tentar gravar o registro '+#13+
'Mensagem Original '+E.Message);
end;
function TDmBase.GetID(Table: String): Integer;
var
SqlQuery : TSQLQuery;
begin
SqlQuery := TSQLQuery.Create(Self);
SqlQuery.SQLConnection := DmBase.MYConnect;
SqlQuery.SQL.Add('SELECT AUTO_INCREMENT FROM information_schema.TABLES WHERE TABLE_NAME = ' + QuotedStr(Table));
SqlQuery.Open;
Result := SqlQuery.Fields[0].Value;
end;
procedure TDmBase.SetID(DataSet: TDataSet);
begin
if DataSet.State in [dsInsert] then
DataSet.Fields[0].Value := GetID(''+ copy(DataSet.Name, 4));
end;
|
No Create dos form abra as tabelas desta forma
TClientDataSet(DS.DataSet).Close;
TClientDataSet(DS.DataSet).CommandText := ('SELECT * FROM clientespht Order By nome');
TClientDataSet(DS.DataSet).Open;
E no Close dos fecho as tabels desta forma.
TClientDataSet(DS.DataSet).Close; |
|
Voltar ao Topo |
|
|
marcosbaixista Profissional
Registrado: Quinta-Feira, 18 de Março de 2010 Mensagens: 594 Localização: Maringá/PR
|
Enviada: Dom Abr 07, 2013 1:32 pm Assunto: |
|
|
Oi amigo.
Pelo que notei, você só ta fechando os ClientDataSet, isso só tira as informações da memória, porém as tabelas estão abertas. Tenta abrir e depois fechar as conexões com as tabelas através do componente que você acessa tabela.
No caso de Query -> Query. Close
No caso de Table -> Table.Close.
Me parece que você está estabelecendo uma conexão a cada vez que acessa as tabelas. |
|
Voltar ao Topo |
|
|
VDL Aprendiz
Registrado: Sábado, 7 de Mai de 2005 Mensagens: 170
|
Enviada: Seg Abr 08, 2013 3:14 pm Assunto: |
|
|
Amigo,
Coloquei no Close do form o seguinte:
DM.SqlDataset.Close;
Porém continua do memso jeito. |
|
Voltar ao Topo |
|
|
joemil Moderador
Registrado: Quinta-Feira, 25 de Março de 2004 Mensagens: 9099 Localização: Sinop-MT
|
Enviada: Seg Abr 08, 2013 3:58 pm Assunto: |
|
|
procure no seu projeto por:
TSqlconnection.Create
ou se vc esta recriando o datamodule cada vez q estabelece a conexão
provavelmente vc deve ter mais de um sqlConnection, ou esta criando algum form q contenha ele
deixe somente um sqlconnection em todo projeto _________________ <b>SEMPRE COLOQUE [RESOLVIDO] NO SEU POST</b>
Enviar imagens: http://tinypic.com/ |
|
Voltar ao Topo |
|
|
VDL Aprendiz
Registrado: Sábado, 7 de Mai de 2005 Mensagens: 170
|
Enviada: Ter Abr 09, 2013 1:09 pm Assunto: |
|
|
Joemil,
Uso apenas um TSqlconnection, porém em alguns form uso esse comando para se conectar ao BD para fazer consulta:
DBCon := TDBXConnectionFactory.GetConnectionFactory.GetConnection
Isto pode ser o problema ?? Tem como encerrar a conexão após a consulta.
Estou colocando DBCon.Free e recebendo mensagem de access violation |
|
Voltar ao Topo |
|
|
CesarRocha Mestre
Registrado: Segunda-Feira, 30 de Mai de 2011 Mensagens: 794 Localização: São Paulo - SP
|
|
Voltar ao Topo |
|
|
claudiomiro Novato
Registrado: Quarta-Feira, 9 de Fevereiro de 2011 Mensagens: 7
|
Enviada: Qui Out 27, 2016 7:12 pm Assunto: |
|
|
Também estou com esse problema, alguem sabe a solução ? |
|
Voltar ao Topo |
|
|
leo_cj Colaborador
Registrado: Sábado, 26 de Março de 2011 Mensagens: 1335
|
Enviada: Sex Out 28, 2016 7:44 am Assunto: |
|
|
joemil escreveu: | procure no seu projeto por:
TSqlconnection.Create
ou se vc esta recriando o datamodule cada vez q estabelece a conexão
provavelmente vc deve ter mais de um sqlConnection, ou esta criando algum form q contenha ele
deixe somente um sqlconnection em todo projeto |
Verifique se isso que o amigo joemil postou não está ocorrendo com você |
|
Voltar ao Topo |
|
|
|