簡體   English   中英

運行 Chainlink 節點 - 無法連接到數據庫

[英]Running a Chainlink Node - Can't connect to database

在 macOS 上使用 docker-desktop。

我正在嘗試按照此頁面上的說明運行節點。

數據庫名稱是node ,它與用戶名相同: node 用戶可以訪問數據庫並且可以使用psql客戶端登錄。

我在 .env 文件中嘗試過的連接字符串:

postgresql://node@localhost/node
postgresql://node:password@localhost/node
postgresql://node:password@localhost:5432/node
postgresql://node:password@127.0.0.1:5432/node
postgresql://node:password@127.0.0.1/node

當我運行啟動命令時cd ~/.chainlink-kovan && docker run -p 6688:6688 -v ~/.chainlink-kovan:/chainlink -it --env-file=.env smartcontract/chainlink local n ,使用docker-desktop 在 macOS 上,我得到以下堆棧跟蹤:

2020-09-15T14:24:41Z [INFO]  Starting Chainlink Node 0.8.15 at commit a904730bd62c7174b80a2c4ccf885de3e78e3971 cmd/local_client.go:50
2020-09-15T14:24:41Z [INFO]  SGX enclave *NOT* loaded                           cmd/enclave.go:11
2020-09-15T14:24:41Z [INFO]  This version of chainlink was not built with support for SGX tasks cmd/enclave.go:12
2020-09-15T14:24:41Z [INFO]  Locking postgres for exclusive access with 500ms timeout orm/orm.go:69
2020-09-15T14:24:41Z [ERROR] unable to lock ORM: dial tcp 127.0.0.1:5432: connect: connection refused logger/default.go:139   stacktrace=github.com/smartcontractkit/chainlink/core/logger.Error
    /chainlink/core/logger/default.go:117
...

有誰知道我該如何解決這個問題?

該問題可能是由於您的 chainlink 數據庫已被Exclusive Lock並且在停止未刪除鎖的節點之前引起的。

在這種情況下你所做的(因為對我有用)是使用 PgAdmin Ui 或類似的方式來查找所有鎖,然后找到鏈鏈接數據庫上的排他鎖並記下它的進程 ID(如果有多個排他鎖)在 chainlink DB 上)

登錄到您的 pg 客戶端並運行SELECT pg_terminate_backend(<pid>)SELECT pg_cancel_backend(<pid>); 在此處輸入這些鎖的 PID(不帶引號),同時不斷刷新 pg admin URL 以查看這些進程是否停止。如果停止,則重新運行您的 chainlink 節點。

問題出在 docker 網絡上。

--network host添加到--network host run 命令,使其為:

cd ~/.chainlink-kovan && docker run -p 6688:6688 -v ~/.chainlink-kovan:/chainlink -it --env-file=.env smartcontract/chainlink --network host local n

這解決了這個問題。

暫無
暫無

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

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