Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以将MySQL数据库与应用程序引擎应用程序一起使用吗_Sql_Mysql_Google App Engine - Fatal编程技术网

我可以将MySQL数据库与应用程序引擎应用程序一起使用吗

我可以将MySQL数据库与应用程序引擎应用程序一起使用吗,sql,mysql,google-app-engine,Sql,Mysql,Google App Engine,我知道AppEngine有自己的数据存储。这在大多数情况下都很好用,而且相当容易使用。但是,我们有一个MySQL数据库,用于多个应用程序,并非所有应用程序都是基于Web的。我们希望使用appengine有很多原因,但希望appengine应用程序能够访问我们的MySQL数据库。我找到的文档没有明确说明我是否可以这样做。有没有人做过这件事,或者有指向如何做的文档的指针?简单的答案是:没有 访问MySQL的方法是向其公开web服务接口。您无法创建到数据库的直接网络连接。本文概述了阻止您使用Mysql

我知道AppEngine有自己的数据存储。这在大多数情况下都很好用,而且相当容易使用。但是,我们有一个MySQL数据库,用于多个应用程序,并非所有应用程序都是基于Web的。我们希望使用appengine有很多原因,但希望appengine应用程序能够访问我们的MySQL数据库。我找到的文档没有明确说明我是否可以这样做。有没有人做过这件事,或者有指向如何做的文档的指针?

简单的答案是:没有


访问MySQL的方法是向其公开web服务接口。

您无法创建到数据库的直接网络连接。本文概述了阻止您使用Mysql的主要限制——本例中的主要限制是“任意网络连接”。您只能从app engine内进行http调用

JVM在安全的“沙箱”中运行 环境来隔离您的 服务和安全应用程序。 沙盒确保应用程序只能 执行不干扰的操作 具有良好的性能和可扩展性 其他应用程序的名称。例如,一个应用程序 无法生成线程,请将数据写入 本地文件系统或make 任意网络连接。应用程序 也不能使用JNI或其他本机 代码。JVM可以执行任何Java 在内存中运行的字节码 沙箱限制

同样的问题


谷歌最近宣布在GAE中支持云SQL-

是的,但不是正常的,通过创建一个web服务或一个简单的php页面作为中间层,并以json或xml传递数据。

我仍处于所有这些的学习阶段,但我相当肯定你现在可以通过以下几种方式做到这一点:

  • 将应用程序脚本链接到应用程序引擎,使用JDBC并将其链接到Google
  • 将SQL数据库存储在Google云存储上
  • 通过电子表格脚本连接应用程序脚本
  • 使用他们的云SQL
“Google Apps Script能够通过JDBC和JDBC服务与数据库建立连接。当前的支持扩展到MySQL、Microsoft SQL Server和Oracle。Apps Script可以轻松连接到托管在Google Cloud 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");