Mysql 如何升级游戏数据库

Mysql 如何升级游戏数据库,mysql,sql,database,Mysql,Sql,Database,你们怎么升级你们的游戏数据库?我的意思是在你们的表中添加新的列,比如说我们有一个经常变化的playerrole表。出于某种原因,我不想登录到数据库服务器升级它。我想写一个脚本文件,在游戏服务器启动时升级它。嗯,修补程序脚本文件类似于以下文件: drop PROCEDURE IF EXISTS dbpatch; DELIMITER ;; create PROCEDURE dbpatch() declare exit HANDLER for SQLEXCEPTIO

你们怎么升级你们的游戏数据库?我的意思是在你们的表中添加新的列,比如说我们有一个经常变化的playerrole表。出于某种原因,我不想登录到数据库服务器升级它。我想写一个脚本文件,在游戏服务器启动时升级它。嗯,修补程序脚本文件类似于以下文件:

  drop PROCEDURE IF EXISTS dbpatch;
    DELIMITER ;;
    create PROCEDURE dbpatch()
        declare exit HANDLER for SQLEXCEPTION ROLLBACK;
        BEGIN
            start TRANSACTION;
            // sql sentence
            update version set v = versionnum;
            commit;
        end;;
    DELIMITER;
    call dbpatch();
    drop PROCEDURE if EXISTS dbpatch;
问题是,我放在dbpatch中的altertable语句将根据mysql文档结束当前活动事务和隐式提交(可能导致部分成功,无法回滚。例如,我得到一个表a,我想在此表中添加三个新列“a”、“b”、“c”,但表a已经得到了列“c”。修补程序进程将由sqlexception终止,但列“a”和“b”将添加到talbe a。我希望可以回滚,而不是部分成功。Th嗯,我用谷歌搜索了一下,有一些解决方法,但他们倾向于创建一个临时表来破解它。 这种方法对我不起作用,因为我在表中得到了一些记录,如果我这样做,我必须来回移动记录,这更容易出错。知道如何解决吗?请提供任何帮助。我们当前的mysql版本是5.5.27