Таким образом, Google Cloud SQL имеет удобную функцию, позволяющую подключаться к локальному экземпляру БД для локальной отладки, как описано здесь:
У меня есть следующие аргументы VM:
-Xmx512m -javaagent:C:\eclipse\plugins \com.google.appengine.eclipse.sdkbundle.1.4.2_1.4.2.v201102111811\appengine-java-sdk-1.4.2\lib\agent\appengine-agent.jar
-Drdbms.server=local
-Drdbms.driver=com.mysql.jdbc.Driver
-Drdbms.url=jdbc:mysql://localhost:3306/testdb?user=root&password=pass
Я поместил драйвер msql в C: \ eclipse \ plugins \ com.google.appengine.eclipse.sdkbundle.1.4.2_1.4.2.v201102111811 \ appengine-java-sdk-1.4.2 \ lib \ impl папку и добавил его в путь к классу.
Однако при выполнении простого запроса SELECT (и он прекрасно работает при развертывании в GAE) он выбрасывает следующее исключение.
java.sql.SQLException: Table not found in statement [SELECT * FROM SOME_TABLE]
Вот фрагмент кода обидчика:
Connection c = null;
try {
DriverManager.registerDriver(new AppEngineDriver());
c = DriverManager.getConnection(MY GOOGLE CLOUD SQL CXN STRING);
PreparedStatement ps = c.prepareStatement("SELECT * FROM SOME_TABLE");
ResultSet rs = ps.executeQuery();
} catch (SQLException e) {
e.printStackTrace();
}
Я подозреваю, что он не понимает, что должен подключаться локально, что мне проверять?