我正在为我的本地计算机上的移动应用程序设置后端环境,而Ruby模型中的Postgres函数调用会在请求中出错。这是日志:
D, [2015-08-05T23:10:06.029187 #1732] DEBUG -- : Game Load (2.0ms) SELECT field1, field2, field3
FROM valuestable
WHERE ARRAY[field1] && (
SELECT custom_function(3, '{}', 'ipad')
);
E, [2015-08-05T23:10:06.029262 #1732] ERROR -- : PG::UndefinedFunction: ERROR: function custom_function(integer, unknown, unknown) does not exist
LINE 4: SELECT custom_function(3, '{}', 'ipad')
^
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
SELECT field1, field2, field3
FROM gamestable
WHERE ARRAY[field1] && (
SELECT custom_function(3, '{}', 'ipad')
);
我们使用Postgres 9.4.1 / Redis / Rails / AWS。
上述sql查询中的custom_function
是在迁移过程中自动创建的类中定义的。我在所述ruby应用程序的.rb
文件夹中的一个带时间戳的db/migrate
文件中看到了它。但是,我不知道如何将“包含/导入”到我的模型中,因此可以防止此错误。我有一个名为user_functions.sql
的sql文件,由我的一位前同事创作,其中引用了custom_function
(来自上面的错误)。
另外,另一个有趣的观点是这个应用程序在Staging和Production上运行完美。它只在本地机器上才能工作。我不知道这是否是直接在AWS上运行的后端上的某种一次性设置,或者它只是我在设置本地后端时缺少的一步。
元信息:我最初是一个iOS开发者,试图在没有真正的后端人的情况下找出一些后端逻辑。
到目前为止我尝试了什么:
custom_function
之前,尝试使用ActiveRecord :: Base.connection.execute(IO.read(“/ path / to / user_functions.sql”))。答案 0 :(得分:0)
查看自定义函数期望的参数和转换它们。
像这样:代替SELECT custom_function(3, '{}', 'ipad')
使用SELECT custom_function(3, '{}'::json, 'ipad'::text)
或SELECT custom_function(3, '{}'::text, 'ipad'::text)
,许多类型都可以在引号内输入