Я создал веб-сервлет Java, используя механизм приложения, сервлет делает запросы к базе данных. Я тестировал сервлет локально, используя локальную базу данных, и он отлично работал, после чего я начал тестировать сервлет локально, но я получил доступ к базе данных Cloud SQL, это также отлично работало.App Engine Java Servlet не подключается к Cloud SQL
Моя проблема возникает после развертывания сервлета. После развертывания все запросы базы данных возвращают следующие:
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not
received any packets from the server.
Я проверил в консоли облака, и мое приложение было правильно добавлен в облаке SQL Авторизованный приложений App Engine на вкладке Access Control.
У кого-нибудь были проблемы с развернутыми сервлетами для серфинга приложений? Какие-либо решения или рекомендации там? Буду признателен за любую помощь!
ОБНОВЛЕНИЕ:
выше ошибка генерируется, используя следующий код, чтобы получить доступ к БД
Class.forName("com.mysql.jdbc.Driver");
Url = "jdbc:mysql://<ip-address-cloudsql>:3306/<dbname>";
Connection con = DriverManager.getConnection (Url,"root",<password>);
была дружнее та же ошибка При использовании этого кода, обратите внимание, что он очень похож на код показано на примере здесь https://developers.google.com/appengine/docs/java/cloud-sql/
Class.forName("com.mysql.jdbc.GoogleDriver");
Url = "jdbc:google:mysql://<appID:instanceID>/<dbname>?
user=root&password=<password>";
Connection con = DriverManager.getConnection (Url);
Я последовал за советы форматирования показать в го это StackOverflow поста, когда дело дошло до установки URL, используя APPID и идентификатор экземпляра: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:
Используя этот код приводит к следующей различной ошибке:
java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
Я предполагаю, что это говорит, потому что мои локальные базы данные cloudsql установлен для выполнения сервлета механизма приложения. Кроме того, знайте, что оба эти метода отлично работали при запуске сервлета локально и доступе к базе данных облака sql.
любые мысли? Я не знаю, что еще попробовать: [
Вы изменили пароль для корневой @ lokalny_host? По умолчанию для root @ localhost нет пароля. Запрос, который поможет увидеть состояние пользователя/паролей, это «SELECT user, host, password FROM mysql.user'. –
Я думал, что изменил его в облачной консоли. но при запуске этого запроса пароль был установлен только для% user, localhost был пустым. смена пароля на пустой была успешной спасибо! однако я хотел бы добавить пароль для localhost, как я могу это сделать? –
Вы должны установить корень @ localst пароль, используя такой запрос: 'UPDATE mysql.user SET password = PASSWORD ('XXXX') WHERE user = 'root' AND host = 'localhost'' где' XXXX' является пароль, который вы хотите. –