【发布时间】:2020-06-12 07:48:42
【问题描述】:
当我从终端会话运行时:
=> psql "$pg_cp_prod_conn_str"
然后执行:
=> ALTER TABLE cp_user_emails
ADD CONSTRAINT email_too_long_ln_check CHECK (char_length(TRIM(email)) < 320);
然后它失败了:
为关系“cp_user_emails”约束“email_too_long_ln_check” 已经存在
但是如果我运行这个:
psql "$pg_cp_prod_conn_str" -c "$(<<EOF
ALTER TABLE cp_user_emails
ADD CONSTRAINT email_non_zero_ln_check CHECK (char_length(TRIM(email)) > 4);
ALTER TABLE cp_user_emails
ADD CONSTRAINT email_too_long_ln_check CHECK (char_length(TRIM(email)) < 321);
EOF
)"
然后查询“成功”并且没有错误消息!但是当我查看数据库时,它和以前一样,所以很明显要么没有到达数据库,要么默默地失败了..
那么为什么当我将它作为脚本而不是直接在终端中运行时,查询不是失败/退出并显示错误消息?
【问题讨论】:
标签: linux postgresql shell psql