Search code examples
ropencpu

Using sqldf & RPostgrSQL in opencpu app


I'm creating a very simple sqldf app where I want to query postgresql database and return results. Here is my R code:

getproperties <- function(name="") {
  options(sqldf.RPostgreSQL.user ="user", 
      sqldf.RPostgreSQL.password ="password",
      sqldf.RPostgreSQL.dbname ="db",
      sqldf.RPostgreSQL.host ="server", 
      sqldf.RPostgreSQL.port =5432,
      sqldf.driver = "PostgreSQL")
  property <- sqldf("select name, url from aston_hotels.property")
  return(property)
}

When I call this using OpenCpu

curl http://localhost/ocpu/user/kesav/library/mylib/getproperties/json --data name=kk

I get the following error

R call failed: process died.

Don't know what's I'm doing wrong. Can anyone point me to an example on how to use DBI from OpenCpu?

Thanks in advance


Solution

  • If the function works when running it on the same machine the terminal but not within OpenCPU, it is likely a security problem. Please check in /var/log/kern.log if there are any lines printed containing DENIED when using the application.

    If this is the case, you can add the appropriate privileges the the security profile by editing

    /etc/apparmor.d/opencpu.d/custom
    

    Also see the server manual section titled Customizing the security profile on this topic.