Google api - bigquery & Appengine - 无法创建数据集

Posted

技术标签:

【中文标题】Google api - bigquery & Appengine - 无法创建数据集【英文标题】:Google api - bigquery & Appengine - cannot create dataset 【发布时间】:2016-04-30 12:30:22 【问题描述】:

我正在尝试在 Google Bigquery 中创建一个新的数据集,同时使用 Google App Engine 作为服务器。

这是我使用的代码 -

set_include_path("Google/" . PATH_SEPARATOR . get_include_path());
require_once 'Service.php';
require_once 'Client.php';
require_once 'Service/Resource.php';
require_once 'Model.php';
require_once 'Collection.php';
require_once 'Service/Bigquery.php';

$project_id = "test";
$dataset_id = "TestDataset";

$client = new Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope(Google_Service_Bigquery::BIGQUERY);

$bigquery = new Google_Service_Bigquery($client);

$ConfigureDataset = new Google_Service_Bigquery_DatasetReference();
$ConfigureDataset->setProjectId($project_id);
$ConfigureDataset->setDatasetId($dataset_id);

$dataset = new Google_Service_Bigquery_Dataset();
$dataset->setDatasetReference($ConfigureDataset);
$dataset->setDescription($dataset_id);

$options = array();

$response = $bigquery->datasets->insert($project_id,$dataset,$options);

我得到的错误是 -

  Fatal error: Class 'Monolog\Logger' not found in /base/data/home/apps/1.392457623149040913/Google/Client.php on line 963

在客户端链接 963 上我发现了这个 -

protected function createDefaultLogger()

$logger = new Logger('google-api-php-client');
$logger->pushHandler(new MonologStreamHandler('php://stderr', Logger::NOTICE));

return $logger;

比我在 Google api 上寻找这个类但没有找到它。

这是我下载的api -

https://github.com/google/google-api-php-client

可能是什么问题?

【问题讨论】:

【参考方案1】:

您需要包含自动加载文件,而不是设置包含路径。有两种方法可以做到这一点。我们推荐的第一个是通过composer 安装这个库:

    安装 composer 后,在项目的根目录中运行以下命令,然后要求 您的 供应商自动加载:

    $ cd /path/to/project
    $ composer require "google/apiclient:2.0.0@RC"
    

    在您的项目中,需要自动加载文件而不是使用 set_include_path 业务:

    require_once '/path/to/project/vendor/autoload.php`;
    

其他方式(更符合您的尝试)是下载包含所有依赖项的包,并要求自动加载器仅用于我们的包:

    下载文件google-api-php-client-2.0.0-RC7

    在您的脚本中,需要供应商目录中的自动加载器:

    require_once '/path/to/google-api-php-client-2.0.0-RC7/vendor/autoload.php`;
    

【讨论】:

包含自动加载时,我收到此错误 - 已弃用:google-api-php-client 的自动加载器在 1.1.3 中已移至 src/Google/autoload.php。此重定向将在 1.2 中删除。请调整您的代码以使用新位置。 这是因为在“src/Google/autoload.php”包中包含一个旧版自动加载器。您可以使用它,但您会收到旧版警告。相反,更改您的包含路径以使用“vendor/autoload.php”中的自动加载器

以上是关于Google api - bigquery & Appengine - 无法创建数据集的主要内容,如果未能解决你的问题,请参考以下文章

在 Google BigQuery 中查询 JSON 字符串

如何使用 google-api-python-client 设置 BigQuery 配置属性?

Google BigQuery 和 Google API 客户端包

如何使用API 而不是使用Google BigQuery数据传输服务?

使用 google bigquery API 时避免 DefaultCredentialsError

Google BigQuery API,如何设置destinationTable 的字段类型?