创建应用程序:未能初始化 ORM
creating application: failed to initialize ORM
我在启动节点时总是遇到这个错误。请回复我哪里错了。
错误:创建应用程序:初始化ORM失败:初始化ORM#NewORM:无法初始化数据库:无法打开?application_name=Chainlink+0.10.7+%7C+ORM+% 7C+98d78e80-6fa0-4e2f-a9a4-c51199bf9d2a for gorm DB conn &{0 0xc0004a93e0 0 {0 0} [] map[] 0 0 0xc0005e29c0 false map[] map[] 0 0 0 0 0 0 0 0 0x59b0a0}:无法连接到主机=/var/run/postgresql 用户=根数据库=:服务器错误(致命:无法识别的配置参数“?application_name”(SQLSTATE 42704))
配置:
LOG_LEVEL=debug
ETH_CHAIN_ID=42
MIN_OUTGOING_CONFIRMATIONS=2
LINK_CONTRACT_ADDRESS=0xa36085F69e2889c224210F603D836748e7dC0088
CHAINLINK_TLS_PORT=0
SECURE_COOKIES=false
FEATURE_EXTERNAL_INITIATORS=true
ALLOW_ORIGINS=*
ETH_URL=wss://kovan.infura.io/ws/v3/8e32345678ghjk456789cvbn4yu
DATABASE_URL=postgresql://localhost:5432/kovan_demo?sslmode=disable
DATABASE_TIMEOUT=0
FEATURE_FLUX_MONITOR=true
MINIMUM_CONTRACT_PAYMENT=100000000000000000
CHAINLINK_DEV=true
问题出在你配置变量的语法上DATABASE_URL
要连接到数据库,您需要一个带有 PASSWORD
的特别创建的 USER
,然后通过启动 chainlink 节点锁定该数据库。默认 postgres
用户将不起作用,因为它用于管理目的。
然后使用以下语法将这些凭据添加到环境变量中:DATABASE_URL=postgresql://$USERNAME:$PASSWORD@$SERVER:5432/$DATABASE
因为您在您的环境中为 postgresql server IP
设置了“localhost”,我假设您的 postgres 运行ning 在与 Chainlink 节点相同的主机上。建立连接有两种不同的方式:
1) 你在 docker 容器中同时拥有 Chainlink 节点和 postgresql 服务器:
您需要指向您的 postgresql 服务器的 container ID
或 container name
并在同一网络中创建两个容器。在这里你可以找到docker的官方文档:https://docs.docker.com/network/bridge/
这意味着您必须桥接容器以便能够相互通信,方法是创建一个网络:
docker network create $NAME
然后将网络标志添加到 Chainlink 节点容器和 postgres-server 容器的 运行 命令:
--network $NAME
重新初始化所有这些容器后,您可以指向容器名称而不是 IP。您的环境中 DATABASE_URL
的语法现在如下所示:
DATABASE_URL=postgresql://$USERNAME:$PASSWORD@$CONTAINER_NAME:32/$DATABASE
除了重新初始化容器,您还可以将 运行ning docker 容器连接到网络/用户定义的网桥: docker network connect $NETWORK_NAME $CONTAINER_NAME
2) postgresql 服务器作为您主机上的应用程序和 docker 容器内的 chainlink 节点:
要实现这一点,您需要配置 chainlink 节点和数据库以允许通信。
postgresql server: 你需要更改配置文件以允许特定 IP 范围的通信(默认情况下,postgres Ip 范围仅为 localhost
).通常你可以在 /etc/postgresql/<version>/main
目录中找到配置文件。
- 将 postgresql.conf 编辑为
listen_addresses = '*'
- 将 pg_hba.conf 编辑为
host all all 172.17.0.1/16 md5
此地址范围属于 Docker,包括分配给您的 Chainlink 容器的 IP。
Chainlink 节点:您需要将 --add-host=host:127.0.0.1
添加到您的 运行 命令以启用与您主机上的数据库和服务的连接。
还请确保通过将 ?ssl=disbable
添加到 ETH_URL
配置来禁用 ssl 以进行测试,因为如果 SSL 不是,Chainlink 节点将 return 一个 [ERROR] 日志在您的服务器上配置(您稍后可以在您的服务器上配置 SSL,因为这是您必须在官方文档中阅读的自己的主题)
强烈建议在生产环境中使用 SSL(当“只是”在内部加密您的流量时),因为它只是保护您所有的数据库通信并确保此数据库中的信息安全.
确保这些环境变量也保存在您的 .zprofile
或 .bash_profile
中,具体取决于您 shell 运行 宁。
您可以使用此命令检查您的主目录中是否存在这些文件:
ls -al
如果没有这样的文件你可以创建一个:
touch ~/.zprofile
然后从您的 .env
文件中写入所有变量,前缀为 export
保存变量后,运行 以下命令使更改在当前终端会话中生效:source .zprofile
或 source .bash_profile
如果您 运行 宁 bash shell.
这将确保您的 chainlink 节点在启动节点时知道在哪里可以找到环境变量:
chainlink node start
我在启动节点时总是遇到这个错误。请回复我哪里错了。
错误:创建应用程序:初始化ORM失败:初始化ORM#NewORM:无法初始化数据库:无法打开?application_name=Chainlink+0.10.7+%7C+ORM+% 7C+98d78e80-6fa0-4e2f-a9a4-c51199bf9d2a for gorm DB conn &{0 0xc0004a93e0 0 {0 0} [] map[] 0 0 0xc0005e29c0 false map[] map[] 0 0 0 0 0 0 0 0 0x59b0a0}:无法连接到主机=/var/run/postgresql 用户=根数据库=:服务器错误(致命:无法识别的配置参数“?application_name”(SQLSTATE 42704))
配置:
LOG_LEVEL=debug
ETH_CHAIN_ID=42
MIN_OUTGOING_CONFIRMATIONS=2
LINK_CONTRACT_ADDRESS=0xa36085F69e2889c224210F603D836748e7dC0088
CHAINLINK_TLS_PORT=0
SECURE_COOKIES=false
FEATURE_EXTERNAL_INITIATORS=true
ALLOW_ORIGINS=*
ETH_URL=wss://kovan.infura.io/ws/v3/8e32345678ghjk456789cvbn4yu
DATABASE_URL=postgresql://localhost:5432/kovan_demo?sslmode=disable
DATABASE_TIMEOUT=0
FEATURE_FLUX_MONITOR=true
MINIMUM_CONTRACT_PAYMENT=100000000000000000
CHAINLINK_DEV=true
问题出在你配置变量的语法上DATABASE_URL
要连接到数据库,您需要一个带有 PASSWORD
的特别创建的 USER
,然后通过启动 chainlink 节点锁定该数据库。默认 postgres
用户将不起作用,因为它用于管理目的。
然后使用以下语法将这些凭据添加到环境变量中:DATABASE_URL=postgresql://$USERNAME:$PASSWORD@$SERVER:5432/$DATABASE
因为您在您的环境中为 postgresql server IP
设置了“localhost”,我假设您的 postgres 运行ning 在与 Chainlink 节点相同的主机上。建立连接有两种不同的方式:
1) 你在 docker 容器中同时拥有 Chainlink 节点和 postgresql 服务器:
您需要指向您的 postgresql 服务器的 container ID
或 container name
并在同一网络中创建两个容器。在这里你可以找到docker的官方文档:https://docs.docker.com/network/bridge/
这意味着您必须桥接容器以便能够相互通信,方法是创建一个网络:
docker network create $NAME
然后将网络标志添加到 Chainlink 节点容器和 postgres-server 容器的 运行 命令:
--network $NAME
重新初始化所有这些容器后,您可以指向容器名称而不是 IP。您的环境中 DATABASE_URL
的语法现在如下所示:
DATABASE_URL=postgresql://$USERNAME:$PASSWORD@$CONTAINER_NAME:32/$DATABASE
除了重新初始化容器,您还可以将 运行ning docker 容器连接到网络/用户定义的网桥: docker network connect $NETWORK_NAME $CONTAINER_NAME
2) postgresql 服务器作为您主机上的应用程序和 docker 容器内的 chainlink 节点:
要实现这一点,您需要配置 chainlink 节点和数据库以允许通信。
postgresql server: 你需要更改配置文件以允许特定 IP 范围的通信(默认情况下,postgres Ip 范围仅为 localhost
).通常你可以在 /etc/postgresql/<version>/main
目录中找到配置文件。
- 将 postgresql.conf 编辑为
listen_addresses = '*'
- 将 pg_hba.conf 编辑为
host all all 172.17.0.1/16 md5
此地址范围属于 Docker,包括分配给您的 Chainlink 容器的 IP。
Chainlink 节点:您需要将 --add-host=host:127.0.0.1
添加到您的 运行 命令以启用与您主机上的数据库和服务的连接。
还请确保通过将 ?ssl=disbable
添加到 ETH_URL
配置来禁用 ssl 以进行测试,因为如果 SSL 不是,Chainlink 节点将 return 一个 [ERROR] 日志在您的服务器上配置(您稍后可以在您的服务器上配置 SSL,因为这是您必须在官方文档中阅读的自己的主题)
强烈建议在生产环境中使用 SSL(当“只是”在内部加密您的流量时),因为它只是保护您所有的数据库通信并确保此数据库中的信息安全.
确保这些环境变量也保存在您的 .zprofile
或 .bash_profile
中,具体取决于您 shell 运行 宁。
您可以使用此命令检查您的主目录中是否存在这些文件:
ls -al
如果没有这样的文件你可以创建一个:
touch ~/.zprofile
然后从您的 .env
文件中写入所有变量,前缀为 export
保存变量后,运行 以下命令使更改在当前终端会话中生效:source .zprofile
或 source .bash_profile
如果您 运行 宁 bash shell.
这将确保您的 chainlink 节点在启动节点时知道在哪里可以找到环境变量:
chainlink node start