Database

让mysql server打印trace日志

mysql server里面内置了一个类于似log4j的日志框架,以输出mysqld执行时产生的trace log. 要让mysql服务器在运行时输出此类trace log,可以这样启动mysql: (for version 5.1) mysqld –debug=d:F:L:n:O,trace.log:t 具体参数见下图:(摘自 ‘Expert MySQL’)

centos 5.7上编译构建可调试的mysql5.1

步骤: 0.安装g++:  yum install gcc-c++* 1.安装yum install ncurses-devel, 否则在./configure时可能会遇到 No curses/termcap library found错误  2. ./configure –with-debug –enable-mysql-maintainer-mode=no #如果没有后面这个参数,会导致warnings being treated as errors,一些警告就会导致安装失败 3. make 4. sudo make install 参考: http://book.51cto.com/art/201001/180782.htm http://hi.baidu.com/zys1234/blog/item/a9ae56019256541f1d9583d4.html http://bugs.mysql.com/bug.php?id=57989 http://www.blogjava.net/chenlb/archive/2007/03/20/105114.html的最后一个评论,解决redeclaration of C++ built-in type ‘bool’

mysql jbdc driver的字符集问题 — 研究笔记

问题: server端的charset设置如何影响程序的正确性? jdbc url里的characterEncoding呢?  研究方法: 执行一条带有中文字面量的查询语句,并断点跟踪mysql jdbc driver的源码,重点关注字符集的设定、字节与字符之间的互转 研究工具:    1.打开driver的sql日志功能: jdbc:mysql://…/…? profileSQL=true,以查看c/s之间的所有sql    2.使用wireshark抓取c/s之间的通讯数据包 软件版本:mysql server: 5.1, jdbc driver: connector/j 5.1.8   测试数据及程序:    1. 数据库的character_set_server = gbk, 但character_set_client = utf8, character_set_results = utf8, character_set_connection = utf8    2. 数据库有一张表,这张表里有一个字段name, name字段采用与服务器同样的编码(即gbk),且表里有一条记录,它的name值为汉字“一“    3. 程序伪码:        DriverManager.getConnection(…);  //建立连接        String name = executeQuery("select * from … where name …

mysql jbdc driver的字符集问题 — 研究笔记 Read More »

MySql: charset 和 collation的设置

charset 和 collation 有多个级别的设置:服务器级、数据库级、表级、列级和连接级 1.服务器级   查看设置:show global variables like ‘character_set_server’; 和 show global variables like ‘collation_server’;   修改设置:在OPTION FILE (/etc/mysql/my.cnf)里设置:    [mysqld]     character_set_server=utf8     collation_server=utf8_general_ci 2. 数据库级    查看设置:select * from information_schema.schemata where schema_name = ‘cookbook’;    设置:      1.若没有显式设置,则自动使用服务器级的配置      2.显式设置:在创建库时指定        create database playUtf8  DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci; 3.表级 …

MySql: charset 和 collation的设置 Read More »

mysql技巧杂烩 (三)

1. Sequence     a.可以把列定义为自增键。这跟Sql Server类似,跟Oracle不同。       create table person(         id int unsigned not null auto_increment,         primary key(id)         …       )       和sql server一样,插入数据时不必指定自增键的值     b.id最大的记录删除后,重新插入的数据的id是多少? 这个答案跟mysql的存储引擎有关。      i.  对于bdb引擎,新的id = 现有id的最大值 + 1; 如果刚删除的最大id=8, 当前的id最大值=7,  则新的id = 7 + 1 =8 ! 也就是说,id =8 被重复使用了!      ii. 对于MyISAM和InnoDB引擎,则可以保证id不会被重用        …

mysql技巧杂烩 (三) Read More »