PostgreSQL终端执行SELECT查询无输出问题求助
可能的原因及排查方法
嘿,作为PostgreSQL新手遇到这种情况完全正常,我来帮你梳理几个最常见的原因,你可以一步步排查:
表本身没有数据
这是最常见的情况——你可能还没往mytable中插入过任何数据。可以尝试插入一条测试数据验证:INSERT INTO mytable (列名1, 列名2) VALUES ('测试值1', '测试值2'); COMMIT;之后再执行
SELECT * FROM mytable;,如果能查到这条数据,说明之前确实是表为空的问题。表名大小写不匹配
PostgreSQL对标识符(表名、列名等)的大小写规则比较特殊:如果创建表时没有用双引号包裹表名,系统会自动将其转为小写存储;但如果创建时用了双引号(比如CREATE TABLE "MyTable" (...)),查询时必须严格使用双引号才能匹配到正确的表。
你可以用\dt命令列出当前数据库的所有表,查看实际的表名格式:\dt如果看到表名是带大写的,那查询时需要写成
SELECT * FROM "MyTable";。事务未提交导致数据未持久化
如果你之前尝试过插入数据,但没有执行COMMIT;就断开了连接,或者执行了ROLLBACK;,那这些数据不会被保存到数据库中。可以检查一下最近的操作记录,确认是否有未提交的事务。连接的数据库或schema验证(虽然可能性较低)
虽然你用\c mydb切换了数据库,但可以再确认下当前连接的数据库是否正确:SELECT current_database();另外,也可以用
\dt *.*列出所有schema下的表,确认mytable确实存在于当前使用的schema中。
内容的提问来源于stack exchange,提问作者betagurkeTV
相关产品推荐
相关产品推荐

