这里的背景比较简单,因为区块链浏览器使用的是blockscout,blockscout的数据库选择的是postgresql,这些服务组件都是使用的docker容器来管理,今天进行区块链上交易查询的时候,发现数据存在部分问题,因此需要进入postgresql来排查
如果连PostgreSQL是什么都不清楚的小伙伴,建议看一下菜鸟教程- PostgreSQL 教程,讲解和操作还是很友好的。
多余的不讲了,我们直接来操作
这里我们只需要关注容器id(CONTAINER ID)和容器名称(NAMES)即可,后面进入postgresql数据库会用到
docker ps
这里我们以容器名称为db的为例
#通过容器名称进入镜像
docker exec -it db /bin/sh
或
#通过容器ID进入镜像
docker exec -it 0ad4d42cbc99 /bin/sh执行完毕上面的命令,我们就进入了postgresql的容器中 因为blockscout将数据库密码写入了环境变量中,因此使用下面的命令即可
psql -U blockscout具体解释如下:
登陆成功如下图

在正常情况下,如果要使用用户名和密码登录 PostgreSQL,可以使用以下格式的命令:
psql -U your_username -d your_database -h your_host -p your_port -W-W 选项用于指示系统提示输入密码
\l
或
\list可以看到有下面4个数据库

我们切换到 blockscout数据库,命令如下:
\c blockscout会看到提示,当前链接的数据库是blockscout,用户是blockscout

\d如下图,可以看到所有的表

记住在postgresql的操作中,所有的退出,都是轻轻点击一下q键即可
q这里以表address_names为例
\d address_names如下图,我们可以看到字段名称、类型、描述、是否为空等等

这里还是以表address_names为例
\d+ address_names如下图

这里仍然以表address_names为例,我们只查询5条
select * from address_names limit 5;如下图,可以看出,查询语句和mysql没有什么区别

\q这里单单一个q是无法退出的
exit;如下图,成功退出了
