在CentOS 6.7上编译MySQL 5.6.30 - "未使用手动指定的变量"

时间:2016-04-29 13:25:03

标签: mysql variables compilation cmake

我已经下载了mysql-5.6.30.tar.gz源文件,已解压缩并且我使用以下CMAKE命令:

$newArray = array();

foreach ($headers as $key => $value) {

if(preg_match('/[a-zA-Z]*[^:]*/',$value) and $key != 0){
 preg_match('/[a-zA-Z]*[^:]*/',$value, $newKey);
$newKey = $newKey[0];
$newArray[$newKey] = trim(str_replace($newKey.':','',$value));
 }else{
$newKey = 0;
    $newArray[0] = $value;
 }
}

除了MAX_INDEXES值250之外,其中大部分都是正常的。客户端对此有非常具体的要求,这也是我尝试从源代码编译它的原因(这似乎不是一种方式)安装MySQL后更改此值,必须在编译时完成。

CMake贯穿编译(在我修复了各种依赖关系之后,等等),但最后状态:

cmake /mysql-5.6.30 -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DWITH_CHARSET=CP1251=1 
-DENABLE_THREAD_SAFE_CLIENT=1 -DMAX_INDEXES=250 -DDOWNLOAD_BOOST=1 
-DWITH_BOOST=%HOME/mysqlboost -DENABLE_DOWNLOADS=1

这是一个问题,因为我特别需要将MAX_INDEXES写入构建文件,因此我可以使用它安装MySQL。任何人都可以告诉我A)为什么它忽略了我传给它的每一个变量?和/或B)是否有任何其他方法可以在MySQL安装中强制执行MAX_INDEXES(至少200)。如果它有帮助,它可以是5.6或5.7。

感谢。

2 个答案:

答案 0 :(得分:2)

您可以从MySQL源目录(已测试)解决MAX_INDEXES和ENABLE_THREAD_SAFE_CLIENT问题:

MY_FLAGS="DMAX_INDEXES=256 -DENABLE_THREAD_SAFE_CLIENT"
cmake -DCMAKE_C_FLAGS="$MY_FLAGS" -DCMAKE_CXX_FLAGS="$MY_FLAGS" .

它忽略你的变量的原因是因为它们不是Cmake变量,而是MySQL的源(某些)引用的宏。

Cmake理解的变量记录在https://dev.mysql.com/doc/refman/5.6/en/source-configuration-options.html

对于内部宏,您必须在MySQL源代码中搜索。

答案 1 :(得分:0)

根据source configuration options上的mysql文档,您列出的配置选项是某个mysql v5.7版本支持的eithes,或者甚至没有在该页面上列出,这意味着它们不是特定于mysql的。

从源代码编译mysql v5.7.1或更高版本,以便能够设置max_indexes配置选项。