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