簡體   English   中英

Google Cloud Search 數據庫連接器問題

[英]Google Cloud Search Database Connector Issues

我正在使用 Google Cloud 搜索( https://developers.google.com/cloud-search/docs/guides/?_ga=2.124920714.-122300216.1578247736 )並且我正在嘗試索引一個 Cloud SQL 實例。 目前,我正在使用此處顯示的指南( https://developers.google.com/cloud-search/docs/guides/database-connector#important-lookingations )。 我已經在 G-Suite 中注冊了源。 我有一個 Cloud Search 服務帳戶,我測試過我可以從我的 Compute Engine 實例連接到 Cloud SQL 實例。

我的配置文件如下,必要信息替換為XXXX:

#
# data source access
api.sourceId=xxxxxxxxxxx
api.identitySourceId=xxxxxxxxxxxxxxxx
api.serviceAccountPrivateKeyFile=./private-key.json
#
# database access
db.url=jdbc:mysql:///<database>?cloudSqlInstance=<cloud_sql_instance>&socketFactory=mysql-socket-factory-connector-j-8&useSSL=false&user=xxxxxxxxx&password=xxxxxxxxx
#
# traversal SQL statements
db.allRecordsSql=select field_1, field_2, field_3 from table;
#
# schedule traversals
schedule.traversalIntervalSecs=36000
schedule.performTraversalOnStart=true
schedule.incrementalTraversalIntervalSecs=3600
#
# column definitions
db.allColumns= field1, field2, field3
db.uniqueKeyColumns=field1
url.columns=field1
#
# content fields
contentTemplate.db.title=field1
db.contentColumns=field1, field2, field3
#
# setting ACLs to "entire domain accessible"
defaultAcl.mode=fallback
defaultAcl.public=true

jdbc 連接字符串基於https://github.com/GoogleCloudPlatform/cloud-sql-jdbc-socket-factory 我正在運行的階段:

java \
   -cp "google-cloudsearch-database-connector-v1-0.0.3.jar:mysql-connector-java-5.1.41-bin.jar" \
   com.google.enterprise.cloudsearch.database.DatabaseFullTraversalConnector \
   [-Dconfig=mysql.config]

但我收到錯誤Failed to initialize connector 完整的堆棧跟蹤是:

Jan 05, 2020 6:29:38 PM com.google.enterprise.cloudsearch.sdk.indexing.IndexingApplication startUp
SEVERE: Failed to initialize connector
com.google.enterprise.cloudsearch.sdk.StartupException: Failed to initialize connector
        at com.google.enterprise.cloudsearch.sdk.Application.startConnector(Application.java:150)
        at com.google.enterprise.cloudsearch.sdk.indexing.IndexingApplication.startUp(IndexingApplication.java:96)
        at com.google.common.util.concurrent.AbstractIdleService$DelegateService$1.run(AbstractIdleService.java:62)
        at com.google.common.util.concurrent.Callables$4.run(Callables.java:122)
        at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NullPointerException
        at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:871)
        at com.google.common.io.BaseEncoding$StandardBaseEncoding.trimTrailingPadding(BaseEncoding.java:672)
        at com.google.common.io.BaseEncoding.decodeChecked(BaseEncoding.java:226)
        at com.google.common.io.BaseEncoding.decode(BaseEncoding.java:212)
        at com.google.api.client.util.Base64.decodeBase64(Base64.java:93)
        at com.google.api.services.cloudsearch.v1.model.Item.decodeVersion(Item.java:329)
        at com.google.enterprise.cloudsearch.sdk.indexing.IndexingServiceImpl.indexItem(IndexingServiceImpl.java:678)
        at com.google.enterprise.cloudsearch.sdk.indexing.DefaultAcl.<init>(DefaultAcl.java:203)
        at com.google.enterprise.cloudsearch.sdk.indexing.DefaultAcl.<init>(DefaultAcl.java:93)
        at com.google.enterprise.cloudsearch.sdk.indexing.DefaultAcl$Builder.build(DefaultAcl.java:466)
        at com.google.enterprise.cloudsearch.sdk.indexing.DefaultAcl.fromConfiguration(DefaultAcl.java:266)
        at com.google.enterprise.cloudsearch.sdk.indexing.template.FullTraversalConnector.init(FullTraversalConnector.java:182)
        at com.google.enterprise.cloudsearch.sdk.indexing.template.FullTraversalConnector.init(FullTraversalConnector.java:97)
        at com.google.enterprise.cloudsearch.sdk.Application.startConnector(Application.java:142)
        ... 4 more
Jan 05, 2020 6:29:38 PM com.google.enterprise.cloudsearch.sdk.BatchRequestService shutDown
INFO: Shutting down batching service. flush on shutdown: true
Exception in thread "main" java.lang.IllegalStateException: Expected the service IndexingApplication [FAILED] to be RUNNING, but the service has FAILED
        at com.google.common.util.concurrent.AbstractService.checkCurrentState(AbstractService.java:344)
        at com.google.common.util.concurrent.AbstractService.awaitRunning(AbstractService.java:280)
        at com.google.common.util.concurrent.AbstractIdleService.awaitRunning(AbstractIdleService.java:175)
        at com.google.enterprise.cloudsearch.sdk.Application.start(Application.java:122)
        at com.google.enterprise.cloudsearch.database.DatabaseFullTraversalConnector.main(DatabaseFullTraversalConnector.java:30)
Caused by: com.google.enterprise.cloudsearch.sdk.StartupException: Failed to initialize connector
        at com.google.enterprise.cloudsearch.sdk.Application.startConnector(Application.java:150)
        at com.google.enterprise.cloudsearch.sdk.indexing.IndexingApplication.startUp(IndexingApplication.java:96)
        at com.google.common.util.concurrent.AbstractIdleService$DelegateService$1.run(AbstractIdleService.java:62)
        at com.google.common.util.concurrent.Callables$4.run(Callables.java:122)
        at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NullPointerException
        at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:871)
        at com.google.common.io.BaseEncoding$StandardBaseEncoding.trimTrailingPadding(BaseEncoding.java:672)
        at com.google.common.io.BaseEncoding.decodeChecked(BaseEncoding.java:226)
        at com.google.common.io.BaseEncoding.decode(BaseEncoding.java:212)
        at com.google.api.client.util.Base64.decodeBase64(Base64.java:93)
        at com.google.api.services.cloudsearch.v1.model.Item.decodeVersion(Item.java:329)
        at com.google.enterprise.cloudsearch.sdk.indexing.IndexingServiceImpl.indexItem(IndexingServiceImpl.java:678)
        at com.google.enterprise.cloudsearch.sdk.indexing.DefaultAcl.<init>(DefaultAcl.java:203)
        at com.google.enterprise.cloudsearch.sdk.indexing.DefaultAcl.<init>(DefaultAcl.java:93)
        at com.google.enterprise.cloudsearch.sdk.indexing.DefaultAcl$Builder.build(DefaultAcl.java:466)
        at com.google.enterprise.cloudsearch.sdk.indexing.DefaultAcl.fromConfiguration(DefaultAcl.java:266)
        at com.google.enterprise.cloudsearch.sdk.indexing.template.FullTraversalConnector.init(FullTraversalConnector.java:182)
        at com.google.enterprise.cloudsearch.sdk.indexing.template.FullTraversalConnector.init(FullTraversalConnector.java:97)

這個問題是“Caused by: java.lang.NullPointerException”。 您應該驗證堆棧跟蹤中引用的行以找到罪魁禍首變量,這應該通過展開堆棧中“另外 4 個”錯誤行的視圖來揭示。

如果我不得不猜測您沒有建立與數據庫的連接。 除了 db.url 之外,您的配置文件對我來說看起來不錯。 根據我的經驗,它應該類似於 jdbc:mysql://localhost:1433;DatabaseName=ExampleDatabase。 您通常為其他屬性獲得的錯誤會准確地告訴您問題是什么(示例 field_1 在表中不存在),但在這種情況下,它沒有建立連接。 嘗試重寫 db.url。

無法初始化連接器 --> 當您的配置文件有問題時會發生此異常。 但通常它會告訴您消息有什么問題。

您是否嘗試在 Compute Engine 虛擬機上運行 Cloud SQL 代理並通過它進行連接?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM