我是通过R连接到Redshift的新手,我已经阅读了其他问题,但在尝试创建表时仍然出现错误。 我已成功建立连接,我认为成功设置了表:
redshiftcon <- dbConnect(mm, user="username", password="secret_password",
dbname="dbtable", host="hostname", port="portnumber")
dbSendQuery(redshiftcon,
"create table ss_playground.test_table (unique_id VARCHAR,
category VARCHAR,
name VARCHAR,
number_min float);")
<PostgreSQLResult:(70214,5,1)>
但是,当我尝试检查表是否存在以及字段是否存在时,我收到以下消息:
dbExistsTable(redshiftcon, ss_playground.test_table)
Error in is(object, Cl) :
error in evaluating the argument 'name' in selecting a method for function
'dbExistsTable': Error: object 'ss_playground.test_table' not found
> dbExistsTable(redshiftcon, 'ss_playground.test_table')
[1] FALSE
我很困惑,因为我认为该表是成功创建的,但也无法在数据库本身中找到它。 当我尝试发送并再次创建它时,我得到以下内容:
> dbSendQuery(redshiftcon,
"create table ss_playground.test_table (unique_id VARCHAR,
category VARCHAR,
name VARCHAR,
number_min float);")
Error in postgresqlExecStatement(conn, statement, ...) :
RS-DBI driver: (could not Retrieve the result : ERROR: Relation
'test_table' already exists)
我有什么遗失的吗?
请帮忙! 谢谢
答案 0 :(得分:2)
我认为ss_playground
不是此用户/角色的默认架构。您可以将架构设置为默认值。偷看here。
要快速修复代码,您可以尝试:
dbExistsTable(redshiftcon, c("ss_playground","test_table"))
或将其破解为
any(grepl("test_table",dbListTables(redshiftcon)))