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

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

还需要帮助吗?

Atlassian社区在这里为您服务。

问社区

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

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 '.#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 '.#sql-XXX_XX' (errno: 150)
...
Caused by: java.sql.SQLException: Can't create table '.#sql-XXX_XX' (errno: 150)

诊断
环境

MySQL作为数据库
诊断步骤

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

SELECT ENGINE FROM information_schema.TABLES WHERE TABLE_SCHEMA = '';
原因
你的一张或多张桌子是  MyISAM。为了正确执行迁移,表必须是InnoDB。

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

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

创造一个  Dump file旧的 Database

mysqldump -u root -p[root_password] [database_name] > /PATH/TO/dumpfilename.sql

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

sed -i.bak 's#MyISAM#InnoDB#g' /PATH/TO/dumpfilename.sql

创建一个新数据库

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

恢复  old Database到 new Database

mysql -u root -p[root_password] [database_name] < /PATH/TO/dumpfilename.sql

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

你可能感兴趣的:(分布式系统,Mysql)