【问题标题】:SlashDB doesn't commit transaction after executing a stored function in MySQL在 MySQL 中执行存储函数后,SlashDB 不提交事务
【发布时间】:2018-08-23 10:28:46
【问题描述】:

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

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

有人知道这里发生了什么吗?

【问题讨论】:

    标签: mysql rest slashdb


    【解决方案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
    

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

    【讨论】:

      猜你喜欢
      • 2014-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-21
      相关资源
      最近更新 更多