1
resposta

[Dúvida] Preciso de ajuda com o MySQL

Sei que a Alura não tem um curso de uso de MySQL no dart/flutter, mas gostaria que se alguém que já tivesse mexido com MySQL me ajudasse.

Achei na internet vários vídeos ensinando como fazer a conexão do MySQL em um programa flutter, basicamente todos eles são iguais entre si, e nos vídeos todos funcionaram.

Peguei o mais simples como exemplo, que vi funcionando no vídeo da pessoa que postou.

Mas no meu caso não funciona.

Antes de prosseguir, eu aproveito para informar

  1. O banco de dados está ativo (consigo fazer operações como SELECT, INSERT, etc no mesmo via MySQL Workbench)
  2. O servidor está escutando a porta 3306
  3. Todas as dependências do programa estão ok.
  4. Meu firewall está desativado, e não tenho nenhum outro software de proteção ativo.
  5. As credenciais dentro do programa estão corretas, são as mesmas que uso para entrar no "MySQL Workbench" e manipular o banco.

A seguir, o programa:

import 'package:mysql1/mysql1.dart';

void main() async {
  // Parâmetros de conexão
  final conn = await MySqlConnection.connect(
    ConnectionSettings(
      host: 'localhost',
      port: 3306,
      user: 'root',
      password: 'aaaabbbb',
      db: 'gas',
    ),
  );

  try {
    // Consulta os registros da tabela "clientes"
    final results = await conn.query('SELECT * FROM clientes');


    // Exibe os registros
    for (var row in results) {
      final cliente = row['cliente'];
      final idade = row['idade'];
      print('Cliente: $cliente, Idade: $idade');
    }
  } catch (e) {
    // Exibe mensagem de erro em caso de falha na consulta
    print('Erro ao consultar a tabela clientes: $e');
  }

  // Fecha a conexão
  await conn.close();
}

A seguir, o erro:

E/flutter ( 3429): [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: SocketException: Connection refused (OS Error: Connection refused, errno = 111), address = localhost, port = 38512

Observem que no final da linha, ele diz que recusou a conexão na porta 38512, sendo que a porta especificada foi a 3306.

Outra coisa curiosa, se eu tentar rodar o programa 10 vezes, em cada uma das vezes o valor de “port” vem diferente, nunca se repete.

Não sei de onde ele tira este número, e estou ficando louco já.

Tudo que eu podia checar eu chequei, e aparentemente está tudo certo, usei sugestões de umas 3 inteligências artificiais para me ajudar a conferir os parâmetros, código, firewall, configurações da máquina, etc. e nada deu certo.

Alguma alma caridosa que já tenha trabalhado com MySQL pode me ajudar, por favor ?

1 resposta

Olá, tudo bem?

Realmente, a troca de porta é muito estranho. Para identificar o problema é necessário considerar os seguintes fatores:

Em que plataforma você está "buildando" o flutter? Se estiver usando um emulador Android, o problema pode residir no próprio emulador e não no PC. Pois normalmente, o emulador do android ele pega um localhost próprio e não do computador. Nesse caso, é recomendado alterar as informações de conexão do banco de dados para o IP do seu computador. Você consegue a informação do IP do computador, através do comando ipconfig no CMD, caso esteja usando Windows. Esse IP, você poderá inserir na conexão MySQL.

Além disso, também recomendo verificar se todas as dependências do seu projeto Flutter estão atualizadas. Às vezes, problemas de conexão podem surgir devido a versões desatualizadas de pacotes.

Espero que as dicas possam te ajudar a identificar o problema.

Qualquer dúvida, compartilhe no fórum.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!