Cant create table xxx_db. sql-XXX_XX (errno: 150) 无法创建表 xxx_db sql-XXX_XX(错误号:150)

本文详细介绍了在Bitbucket Server从1.2.X升级到1.3.X过程中遇到的SQL错误150的问题,主要原因是数据库表引擎为MyISAM而非InnoDB。文章提供了详细的诊断步骤及解决方案,包括如何转换数据库表引擎,创建新数据库,并恢复数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

无法创建表'<xxx_db>。#sql-XXX_XX'(错误号:150)
相关内容

还需要帮助吗?

Atlassian社区在这里为您服务。

问社区

问题
atlassian-stash.log升级  Stash 1.2.X到  以下时出现以下内容  Stash 1.3.X:

<span style="color:#172b4d"><span style="color:black"><code class="language-none">2012-10-10 12:42:18,286 ERROR [main]  liquibase Change Set liquibase/r1_3/m01.xml::STASHDEV-1651-6::bturner failed.  Error: Error executing SQL ALTER TABLE `stash`.`sta_comment` ADD CONSTRAINT `fk_sta_comment_author` FOREIGN KEY (`author_id`) REFERENCES `stash`.`stash_user` (`id`): Can't create table '<STASH_DB>.#sql-XXX_XX' (errno: 150)
liquibase.exception.DatabaseException: Error executing SQL ALTER TABLE `stash`.`sta_comment` ADD CONSTRAINT `fk_sta_comment_author` FOREIGN KEY (`author_id`) REFERENCES `stash`.`stash_user` (`id`): Can't create table '<STASH_DB>.#sql-XXX_XX' (errno: 150)
...
Caused by: java.sql.SQLException: Can't create table '<STASH_DB>.#sql-XXX_XX' (errno: 150)
</code></span></span>
诊断
环境

MySQL作为数据库
诊断步骤

运行以下查询以检查是否  Table设置为  MyISAM:

<span style="color:#172b4d"><span style="color:black"><code class="language-none">SELECT ENGINE FROM information_schema.TABLES WHERE TABLE_SCHEMA = '<STASH_DB>';</code></span></span>
原因
你的一张或多张桌子是  MyISAM。为了正确执行迁移,表必须是InnoDB。

解析度
创建一个转储old database,创建一个  new database(根据我们  的MySQL指南),恢复  dump of the old database到  new database并尝试Bitbucket Server 再次升级  :

在执行以下步骤之前,请记住停止  Bitbucket Server实例。

创造一个  Dump file旧的 Database

<span style="color:#172b4d"><span style="color:black"><code class="language-none">mysqldump -u root -p[root_password] [database_name] > /PATH/TO/dumpfilename.sql</code></span></span>

转储包含存储引擎。以下命令将myISAM替换为innodb

<span style="color:#172b4d"><span style="color:black"><code class="language-none">sed -i.bak 's#MyISAM#InnoDB#g' /PATH/TO/dumpfilename.sql</code></span></span>

创建一个新数据库

<span style="color:#172b4d"><span style="color:black"><code class="language-none">mysql> SET GLOBAL storage_engine = 'InnoDB';
mysql> CREATE DATABASE bitbucket CHARACTER SET utf8 COLLATE utf8_bin;
mysql> GRANT ALL PRIVILEGES ON bitbucket.* TO 'bitbucketuser'@'localhost' IDENTIFIED BY 'password';
mysql> FLUSH PRIVILEGES;
mysql> QUIT</code></span></span>

恢复  old Database到 new Database

<span style="color:#172b4d"><span style="color:black"><code class="language-none">mysql -u root -p[root_password] [database_name] < /PATH/TO/dumpfilename.sql</code></span></span>

更改   以使用新的。<STASH_HOME>/stash-config.propertiesDatabase
现在upgrade再次尝试  该实例,程序应该没有任何问题
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值