回答

收藏

无法将数字类型转换为布尔值

技术问答 技术问答 266 人阅读 | 0 人回复 | 2023-09-13

ALTER TABLE products ALTER COLUMN power_price DROP DEFAULT;% g4 \6 C/ N$ O, P  V, q
ALTER TABLE products ALTER COLUMN power_price TYPE bool USING (power_price::boolean);
/ }; R* N! i6 L  q' P" eALTER TABLE products ALTER COLUMN power_price SET NOT NULL;
# @9 H9 V! G/ J9 G6 O7 fALTER TABLE products ALTER COLUMN power_price SET DEFAULT false;
" s! p0 {; ?3 k! O; \Postgres给我这个错误:8 s) N) V0 x5 w& q) }2 M

% \" p4 D; \" e7 m1 v查询失败:错误:无法将数字类型转换为布尔值
- R, E7 D7 v' A1 d( U  o# H( s7 L

5 l- b+ i- i- ]. {, w               
; M( ~! O5 O: k6 _解决方案:
0 c" x( l! {- z& u- y9 {0 y                5 Q  e5 A* {( ]/ d

) E2 q8 Z* V/ I3 c8 @4 j, A1 N% [0 H* v8 c' i1 e
                使用:
, e4 j$ J$ `2 G& ]# m; VALTER TABLE products ALTER power_price TYPE bool USING (power_price::int::bool);
, h* x6 U5 w! t( \& Anumeric和之间没有定义直接转换boolean。您可以integer用作中间立场。text将是中间立场的另一个候选者,因为每种类型都可以从/强制转换text。价值19 i+ S: B6 j: b4 v0 Y, c
/ 0当然是必须的。6 `" B+ }1 f, z6 C; r; I0 Y
更好的是,用一个命令完成所有操作,以获得更好的性能和更短的锁定时间:& L% p$ ?/ J, o: B
ALTER TABLE products
: h" a) {3 _9 |  ALTER power_price DROP DEFAULT" ~/ b1 h+ x- p% }/ w+ x
,ALTER power_price TYPE bool USING (power_price::int::bool)
9 R  x/ S) {9 ]& S' r% E) u$ Q ,ALTER power_price SET NOT NULL( Z% e% Z; t; K4 I# _) }# q
,ALTER power_price SET DEFAULT false;) p  S* H2 [: d
手册中有关的详细信息ALTER
) W+ b' r/ O% A9 |- W/ ~TABLE。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则