在MySQL

时间:2018-03-14 18:39:34

标签: mysql rest slashdb

我在MySQL 5.7之上安装了SlashDB。我使用它来提供自定义REST API调用,以允许其他人访问数据库中的数据。其中大部分都是通过SQL Pass-thru'特征

执行直接SQL查询时,会立即提交对数据库的更改。但是,当我执行存储函数(通过select [function name])时,情况并非如此。该函数将完美执行,但在我发出commit;之前,不会对数据进行任何更改。主要问题是这会导致表和其他MySQL对象的搁浅锁定。

任何人都知道这里发生了什么?

1 个答案:

答案 0 :(得分:1)

目前唯一的解决方法是手动将?autocommit=true添加到/etc/slashdb/databases.cfg中的连接字符串。

例如

myChinook:
  alternate_key: {}
  autoconnect: true
  autoload: true
  autoload_user: {dbpass: chinook, dbuser: chinook}
  connection: 127.0.0.1:3308/Chinook?autocommit=true
  creator: admin
  db_encoding: utf-8
  db_id: myChinook
  db_schema: null
  db_type: mysql
  desc: ''
  excluded_columns: {}
  execute: []
  foreign_keys: {}
  owners: [admin]
  read: []
  write: []

手动更改文件后,需要重新启动SlashDB服务

sudo service slashdb stop
sudo service slashdb start

或者调用存储过程而不是选择存储函数。