首页 > 编程知识 正文

mysql表源码,mysql源码编译

时间:2023-12-29 13:16:39 阅读:329955 作者:KWTT

本文目录一览:

mysql5.6.33源码编译

重点不是这里,重点是下面的错误:

[ERROR] Plugin 'InnoDB' init function returned error.

[ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.

[ERROR] Unknown/unsupported table type: InnoDB

[ERROR] Aborting

把你的 datadir 数据目录清空。重新运行mysql_install_db

如何才能让自己看懂MySQL源码,并且能够自己写出相应的patch

1. 网络模型,MySQL 的网络模型太老了, one connection per thread,代码很简单。

2. 协议解析,MySQL 的 协议还算比较简单的,但是设计的 prepare 的协议就要花点时间,我写个一些分析的文章和图,网上你搜索下。这里你要花时间把 mysql client 这个客户端的代码都看看,这样对你往后无论开发 jdbc还是 libmysqlclient 的项目都有帮助。

3. SQL 解析,咳咳,不好意思大难题了。不过还好对于编译原理的知识你只需要了解前端的词法解析和 yacc 的使用即可,你可以参考 flex and bison 这本书 ,仅仅需要看懂 yy 和 lex 文件即可,yy 比较长,但里面涵盖了所有的 MySQL 所支持的 sql 的语法。我也写过一个简单的 sql parser,在我的 github 上。

4.replication,这个不复杂就几个文件。

怎么用visual studio打开mysql源码

1.下载 mysql++-3.1.0.tar.gz,解压,如:c:mysql++-3.1.0

2、mysql++-3.1.0 目录下进入相应 Visual Studio 版本(VS2003,VS2005,VS2008。VS2010可以使用VS2008),打开解决方案,这里以VS2008为例。

3、把mysql++设为启动项目,生成时可能会报错:错误为“无法打开libmysql.lib”

4、在mysql安装目录下找到libmysql.lib,复制到 C:Program FilesMicrosoft Visual Studio 9.0VClib (这里以VS2008为例),再次生成成功。

5、设置 resetdb 为启动项,如果生成成功,则说明OK。

6、把 c:mysql++-3.1.0vc2008Debug 目录下的 mysqlpp_d.dll、mysqlpp_d.lib、libmysql.dll、libmysql.lib 四个文件和 c:mysql++-3.1.0lib目录 拷贝到放置到新项目的根目录下。

7、右键新项目的属性——配置属性——链接器——输入——附加依赖项——添加 mysqlpp_d.lib libmysql.lib

8、测试代码:

#include iostream

#include string

#include cstdlib

#include "mysql++.h"

using namespace std;

int main()

{

mysqlpp::Connection con(false);

con.set_option(new mysqlpp::SetCharsetNameOption("gbk"));

cout "请输入数据库(root用户)连接密码:";

string pwd;

getline(cin, pwd);

if (!con.connect("tot", "localhost", "root", pwd.c_str()))

{

cout "无法连接,请检查密码是否正确!" endl;

return -1;

}

mysql 源代码 怎么看

给你个过来人的建议。两个方式入手。

1、利用他。尽可能从大模块开始,用你的代码,去调用他。这是从功能特性角度,去理解各个模块的作用。这非常容易加深你对应用它的理解。

2、在代码中插入LOG,检测代码运行流程。

如果你只是静态的看代码,这个不现实的。

如果你想看一部分代码。首先你要想办法让这套代码RUN起来,如果你使用任何方式都无法让这段代码运行,我只能说,这段代码没有存在价值。为什么在里面,当然更大的可能是,你没找到开启它的方法。

动态分析法,是门学问。包括对运行态才出现BUG的系统进行DEBUG,当然不是GDB或者VC的F5模式。不过貌似学校没有这类教学。很工程的东西。我也只是经验所得。没有系统的理论化。

例如一套系统,你在不改代码的情况下,要能找到问题。甚至不能加LOG代码,只能通过反馈判断。不是不可能的。甚至有时必须这么做。

mysql5源码中初始化部分在哪

mysql的源码安装

1.解压压缩包

[root@server1 mnt]# tar zxfmysql-boost-5.7.11.tar.gz #解压gz包

[root@server1 mnt]# yum installcmake-2.8.12.2-4.el6.x86_64.rpm -y #安装cmake

[root@server1 mnt]# cd mysql-5.7.11/

2.软件配置

[root@server1 mysql-5.7.11]# cmake-DCMAKE_INSTALL_PREFIX=/usr/local/lnmp/mysql #安装路径

-DMYSQL_DATADIR=/usr/local/lnmp/mysql/data #数据库存放路径

-DMYSQL_UNIX_ADDR=/usr/local/lnmp/mysql/data/mysql.sock #Unix socket 文件路径

-DWITH_MYISAM_STORAGE_ENGINE=1 #安装myisam 存储引擎

-DWITH_INNOBASE_STORAGE_ENGINE=1 #安装innodb 存储引擎

-DDEFAULT_CHARSET=utf8 #使用utf8 字符

-DDEFAULT_COLLATION=utf8_general_ci #校验字符

-DEXTRA_CHARSETS=all #安装所有扩展字符集

-DWITH_BOOST=boost/boost_1_59_0/ #boost的指定路径

如果出现如下错误

[root@server1 mysql-5.7.11]# rm -frCMakeCache.txt #清空缓存文件

[root@server1 mysql-5.7.11]# yuminstall ncurses-devel gcc-c++ -y #安装上图需要的软件包

#####注意:重新加载配置之前,一定要清空缓存文件

重新配置

[root@server1 mysql-5.7.11]# cmake-DCMAKE_INSTALL_PREFIX=/usr/local/lnmp/mysql-DMYSQL_DATADIR=/usr/local/lnmp/mysql/data-DMYSQL_UNIX_ADDR=/usr/local/lnmp/mysql/data/mysql.sock-DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DDEFAULT_CHARSET=utf8-DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all-DWITH_BOOST=boost/boost_1_59_0/

[root@server1 mysql-5.7.11]# yuminstall bison -y #系统可以跳过warning错误,此步骤可有可无

3.编译、链接、安装

[root@server1mysql-5.7.11]# make #编译,链接,生成可执行文件

[root@server1mysql-5.7.11]# make install #安装

2.mysql的简单配置

1.添加mysql的用户和用户组

[root@server1mysql-5.7.11]# cd /usr/local/lnmp/mysql/

为了安全起见,可以创建专门的mysql用户和用户组,用来启动和关闭数据库,避免了用root用户启动数据库

[root@server1mysql]# useradd -u 27 -M -d/usr/local/lnmp/mysql/data -s /sbin/nologin mysql #创建mysql用户

[root@server1mysql]# id mysql

uid=27(mysql)gid=901(mysql) groups=901(mysql)

[root@server1mysql]# groupmod -g 27 mysql

[root@server1mysql]# id mysql

uid=27(mysql)gid=27(mysql) groups=27(mysql)

[root@server1mysql]# chown mysql.mysql . -R #修改mysql目录下文件的权限

2.添加配置文件、启动脚本、环境变量

[root@server1mysql]# cp /etc/my.cnf /mnt/ #备份my.cnf

[root@server1mysql]# cd support-files/

[root@server1support-files]# cp my-default.cnf /etc/my.cnf #服务器配置文件

cp:overwrite `/etc/my.cnf'? y

[root@server1support-files]# cp mysql.server /etc/init.d/mysqld #添加mysql启动命令

[root@server1support-files]# cd ..

[root@server1mysql]# cd bin/

[root@server1bin]# pwd

/usr/local/lnmp/mysql/bin

[root@server1bin]# vim /root/.bash_profile #将mysql添加到系统的环境变量里

10 PATH=$PATH:$HOME/bin:/usr/local/lnmp/mysql/bin

[root@server1bin]# source /root/.bash_profile #刷新环境变量文件

[root@server1bin]# echo $PATH #查看mysql添加到环境变量

/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin:/usr/local/lnmp/mysql/bin

[root@server1bin]# which mysql #测试

/usr/local/lnmp/mysql/bin/mysql

3.Mysql的初始化及一些设置

[root@server1~]# mysqld --initialize--user=mysql #初始化mysql

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。