我可以将MySQL数据库与应用程序引擎应用程序一起使用吗
我知道AppEngine有自己的数据存储。这在大多数情况下都很好用,而且相当容易使用。但是,我们有一个MySQL数据库,用于多个应用程序,并非所有应用程序都是基于Web的。我们希望使用appengine有很多原因,但希望appengine应用程序能够访问我们的MySQL数据库。我找到的文档没有明确说明我是否可以这样做。有没有人做过这件事,或者有指向如何做的文档的指针?简单的答案是:没有我可以将MySQL数据库与应用程序引擎应用程序一起使用吗,sql,mysql,google-app-engine,Sql,Mysql,Google App Engine,我知道AppEngine有自己的数据存储。这在大多数情况下都很好用,而且相当容易使用。但是,我们有一个MySQL数据库,用于多个应用程序,并非所有应用程序都是基于Web的。我们希望使用appengine有很多原因,但希望appengine应用程序能够访问我们的MySQL数据库。我找到的文档没有明确说明我是否可以这样做。有没有人做过这件事,或者有指向如何做的文档的指针?简单的答案是:没有 访问MySQL的方法是向其公开web服务接口。您无法创建到数据库的直接网络连接。本文概述了阻止您使用Mysql
访问MySQL的方法是向其公开web服务接口。您无法创建到数据库的直接网络连接。本文概述了阻止您使用Mysql的主要限制——本例中的主要限制是“任意网络连接”。您只能从app engine内进行http调用 JVM在安全的“沙箱”中运行 环境来隔离您的 服务和安全应用程序。 沙盒确保应用程序只能 执行不干扰的操作 具有良好的性能和可扩展性 其他应用程序的名称。例如,一个应用程序 无法生成线程,请将数据写入 本地文件系统或make 任意网络连接。应用程序 也不能使用JNI或其他本机 代码。JVM可以执行任何Java 在内存中运行的字节码 沙箱限制 看 同样的问题
谷歌最近宣布在GAE中支持云SQL-是的,但不是正常的,通过创建一个web服务或一个简单的php页面作为中间层,并以json或xml传递数据。我仍处于所有这些的学习阶段,但我相当肯定你现在可以通过以下几种方式做到这一点:
- 将应用程序脚本链接到应用程序引擎,使用JDBC并将其链接到Google
- 将SQL数据库存储在Google云存储上
- 通过电子表格脚本连接应用程序脚本
- 使用他们的云SQL
(源于)在开发过程中使用本地MySQL实例:
import com.google.appengine.api.rdbms.AppEngineDriver;
public static void makeConnection() {
try {
if (conn == null || !conn.isValid(0)) {
String url = "localhost/databasename";
String username = "root";
String password = "password";
DriverManager.registerDriver(new AppEngineDriver());
String urlForConnection = "jdbc:mysql://" + url;
conn = DriverManager.getConnection(urlForConnection, username, password);
}
} catch (SQLException e) {
e.printStackTrace();
}
}
// in web.xml
<filter>
<filter-name>_ah_DevSocketFilter</filter-name>
<filter-class>com.google.appengine.api.socket.dev.DevSocketFilter</filter-class>
<init-param>
<param-name>use-native-sockets</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>_ah_DevSocketFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
是的,你可以
了解int
您可以将它与GAE支持的任何语言一起使用,也可以从GAE外部通过它进行连接。我很想知道这个答案如何值得否决票,特别是在事实发生一年后。这不再是事实。查看Google Cloud SQL:@lukas注意,您仍然无法连接到外部MySql数据库,就像希望的OP一样。您只能连接到App Engine托管的mysql数据库。另外,目前您无法从外部App Engine连接到您的云托管数据库。感谢您提供的代码,此代码在开发期间与本地MySQL实例一起工作。我想知道是否可以将外部MySQL数据库(而不是云MySQL实例)与App enging(在生产期间)连接。否。您只能使用google cloud sql。这是出于安全原因(只是他们不允许您访问他们的web服务)。但是,您可以将google cloud sql与mysql workbench之类的desctope客户端连接起来,以便在您的mashinethanks上管理google cloud sql。对于您的回答,您是指SOAP和RESTful web服务吗??
DriverManager.registerDriver(new AppEngineDriver());
c = DriverManager.getConnection("jdbc:google:rdbms://instance_name/guestbook");