Worklight,SQL-适配器,指定为定义者的用户 ('mobilefirst'@'localhost') 不存在

Worklight, SQL-Adapter, The user specified as a definer ('mobilefirst'@'localhost') does not exist

我是 sql 和工作灯的新手。我正在关注 IBM Worklight SQL-Adapter tutorial,并将示例代码导入 worklight studio。

部署适配器后,我选择 运行 as -> Call Mobilefirst Adapter。

这是我对程序的回复 "getAccountTransactions1":

{   "isSuccessful": true,   "resultSet": [   ]}

这是我对程序的回复 "getAccountTransactions2":

{   "errors": [      "Runtime: Failed to retrieve data with procedure : getAccountTransactions"   ],   "info": [   ],   "isSuccessful": false,   "warnings": [   ]}

这是程序 "getAccountTransactions2"

的错误控制台

FWLSE0101E:原因:[项目适配器]java.sql.SQLException:指定为定义者的用户 ('mobilefirst'@'localhost')不是 existjava.lang.RuntimeException:使用过程检索数据失败:getAccountTransactions

我认为 sql 用户 'mobilefirst'@'localhost' 有问题,但我不知道为什么,因为我在 SQLAdapter.xml 中使用 root 用户。

如果我将"Worklight" sql用户用作此示例代码的默认值,如何设置权限?

Image for error console

User who created that procedure has been deleted. If you recreate that user, it should address your error.

您可以尝试使用:

grant all on *.* to 'root'@'%' identified by 'password' with grant option;

您提到了用户 "mobilefirst",这让您看起来像是在使用 MobileFirst Platform Foundation 6.3 或 7.0(以前称为 "Worklight"),但由于某些原因您 following/using 来自 Worklight 6.0.0.0 的示例...这是为什么?

你不知何故在你的数据库中混合了一些东西...

无论您造成混乱的原因是什么,最简单的解决方案是简单地将所有权限授予 mobilefirst@localhost 用户和 Worklight@localhost。

然后您还需要确保在您的适配器的 XML 文件中您使用的是同一个用户 - "mobilefirst" 或 "Worklight"(数据库中您使用的同一个用户)已授予所有权限)。

关于 运行 的确切查询,您可以参考 Stanislovas 的回答 - 只需将 "root" 替换为适当的用户名即可。

并且不要将旧样品与新产品版本混在一起...