我正在学习一些psql,并且当命令行光标在长命令后从=#变为'#时,当前遇到了问题。然后,Shell完全忽略所有命令。 有人可以解释一下这个问题是什么以及如何避免/解决它?
Active code page: 1251
Server [localhost]:
Database [postgres]:
Port [5432]:
Username [postgres]:
Password for user postgres:
psql (9.6.5)
WARNING: Console code page (1251) differs from Windows code page (1252)
8-bit characters might not work correctly. See psql reference
page "Notes for Windows users" for details.
Type "help" for help.
postgres=# insert into manuf values (3, 'manuf3', 'city2');
INSERT 0 1
postgres=# insert into manuf values (1, 'manuf1', 'city1')
postgres-# ;
INSERT 0 1
postgres=# insert into manuf values (2, 'manuf2', 'city2');
INSERT 0 1
postgres=# insert into product values (6, 'product6', 54, 34, 4), (5, 'product5', 34, 16, 5), (10, 'product10', 57, 4, 5), (9, 'product9', 66, 6, 2), (8, 'product8), 43, 16, 5), (7, 'product7', 76, 14, 3);
postgres'# \h
postgres'# WTF
postgres'# \q
postgres'#
我注意到如果某个特定请求在第一次执行此操作时,它将始终导致该问题。但并非所有具有相似长度的请求都会导致问题。
UPD:
(8, 'product8', 43, 16, 5)
修好了这条线。仍然在想,为什么shell会以这种方式行事,不会发出任何错误信息,只是冻结。
答案 0 :(得分:1)
问题已经在评论中提到,但只是为了重复:
在原始值列表中有一个拼写错误:(8, 'product8), 43, 16, 5)
- 括号而不是引号,因此控制台正在等待结束字符串文字,并且它是用提示符'#
指示的内容。这是许多控制台实现的标准行为,允许您逐行输入多行字符串或代码块