2015-10-20 157 views
1

我使用ast_update_realtime()更新到PostgreSQL数据库。如何将PostgreSQL数据库时间戳更新为星号中的空值?

res = ast_update_realtime("confinfo", "id", "01", "start_time", "NULL", SENTINEL); 

但我得到这样的错误:

[Oct 20 15:44:50] ERROR[30428][C-00000000]: res_config_pgsql.c:169 _pgsql_exec: PostgreSQL RealTime: Query Failed because: ERROR: invalid input syntax for type timestamp with time zone: "NULL" 
LINE 1: UPDATE confinfo SET start_time = 'NULL' WHERE id = '01' 
             ^
(PGRES_FATAL_ERROR) 

我发现原因是 “NULL”,而不是在SQL字符串NULL。 我该如何纠正它?

回答

0

而是提供NULL值的你可以尝试把空字符串像''或者干脆

res = ast_update_realtime("confinfo", "id", "01", "start_time", NULL, SENTINEL); 
+0

@GSP: - 当然,欢迎您! –

+0

@GSP:试试这个:'res = ast_update_realtime(“confinfo”,“id”,“01”,“start_time”,“”,SENTINEL);' –

+0

我得到了同样的错误(它只是改变了'NULL' ''在SQL字符串中)。 – GSP

0
UPDATE confinfo SET start_time = NULL WHERE id = '01' 

UPDATE confinfo SET start_time = 'NULL' WHERE id = '01'

代替你应该传递NULL没有""

+0

我知道这一点,但我不直接通过PostgreSQL使用,我使用ast_update_realtime()的值为“NULL”字符串。当Asterisk将它转换为SQL字符串时,“NULL”字符串为'NULL'(单引号)。我怎样才能删除这个报价? – GSP

+0

@GSP你可以像'res = ast_update_realtime(“confinfo”,“id”,“01”,“start_time”,NULL,SENTINEL)那样通过'NULL';' –

+0

ast_update_realtime()函数将会以NULL结尾(SENTIEL为NULL)。如果我没有引用NULL传递,我得到分段错误(核心转储) – GSP

相关问题