Удаленный доступ к sql для приложений Android: сбой канала связи

#java #android #mysql

#java #Android #mysql

Вопрос:

Я сталкиваюсь с этой проблемой сбоя канала связи при подключении моего приложения Android к удаленной базе данных mysql.

Используемый файл JAR: mysql-connector-java-5.1.31-bin

Информация об удаленном sql: innodb_version: 1.0.17-13.3

protocol_version: 10 версия: 5.1.62-rel13.3-журнал

version_comment: Percona Server (GPL), 13.3, редакция 435

version_compile_machine: x86_64

version_compile_os: неизвестно-linux-gnu

Я попытался использовать mysql workbench для подключения к удаленной базе данных, и это работает отлично. Но в моем приложении для Android я получаю сбой канала связи. Я не думаю, что что-то не так с моими настройками подключения, поскольку они те же, что я использую в workbench или для подключения через терминал (на Mac и это работает).

Кроме того, я думаю, что драйвер jdbc, который я использую, тоже в порядке. Кто-нибудь может внести какие-либо другие предложения относительно того, в чем может заключаться проблема?

Вот полное исключение:

 07-07 02:59:10.568: D/QueryException(1745): Exception in connection Communications link failure
07-07 02:59:10.568: D/QueryException(1745): The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
  

Вот часть кода, вызывающая исключение в Logcat:

 connection = DriverManager.getConnection("jdbc:mysql://<hostname_goes_here>/<database_name>","<username>","<password>");
        if(connection!=null){
            Log.d("Connecting to remote server", "Remote sql server connection successful");
        }
        else{
            Log.d("Connection failure", "Could not connect to remote sql server with host " hostName);
        }
    } catch(Exception e){
        Log.d("QueryException","Exception in connection " e.getMessage());
        System.out.println("Caught exception while connecting to database " e);
        e.printStackTrace();
    }
  

Комментарии:

1. Вы видите попытку подключения на стороне сервера? Могут ли подключаться другие устройства (например, ПК) в той же сети? Сначала устраните подобные сетевые проблемы. Кроме того, прямое подключение к базе данных с мобильного устройства считается очень плохой идеей с точки зрения безопасности, для этого требуется разрешить доступ к серверу с любого IP. Обычно требуется промежуточный веб-сервис, чтобы вы могли отключить свой веб-сервер брандмауэром.

2. @GabeSechan Я написал базовый класс подключения Java, чтобы попытаться подключиться к удаленной базе данных и выполнить запрос, и все работает нормально! Но по какой-то причине мой код Android не работает и выдает сбой канала связи.