我们的 postgres 数据库(安装在 Debian 上的 9.4 版)停止工作(它已经工作了几个月没有问题)。当我尝试使用 psql 连接时,我得到:
psql: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
Run Code Online (Sandbox Code Playgroud)
当我检查状态时,它似乎没问题:
service postgresql status
? postgresql.service - PostgreSQL RDBMS
Loaded: loaded (/lib/systemd/system/postgresql.service; enabled)
Active: active (exited) since Mon 2018-11-05 17:04:58 CET; 31s ago
Process: 1367 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
Main PID: 1367 (code=exited, status=0/SUCCESS)
Run Code Online (Sandbox Code Playgroud)
我试图重新启动服务器
service postgresql restart
Run Code Online (Sandbox Code Playgroud)
在日志文件中我有
FATAL: could not access file "pg_stat_statements": No such file …Run Code Online (Sandbox Code Playgroud) 我有包含bytea列的IMAGE表.bytea列的值可以为null.我在这个表中有三行:
当我在pgAdmin中查看此表中的数据时,我看到:

从输出我不知道哪一行包含bytea列中的二进制数据,哪一行不包含.当我运行SQL时选择:
select id, name, data from image;
Run Code Online (Sandbox Code Playgroud)
我得到以下结果,我可以说id 2的行包含一些二进制数据,但我无法区分其他行(id为1和3的行)是否有一些数据或为null:

问题
为了澄清,我附上了Java测试代码,用于保存和从IMAGE表中检索数据.Image small.png的大小为460B,large.png的大小为4.78KB.
private static final String JDBC_POSTGRESQL = "jdbc:postgresql://localhost/testDB?user=username&password=passwd";
private static File[] files = {new File("small.png"), new File("large.png")};
public static void main(String[] args) {
// stores just the string
try (Connection con = DriverManager.getConnection(JDBC_POSTGRESQL)) {
PreparedStatement ps = con.prepareStatement("insert into image (name) values (?)");
ps.setString(1, "some string");
ps.executeUpdate();
} catch (SQLException e1) {
e1.printStackTrace();
}
// store images
for …Run Code Online (Sandbox Code Playgroud)