摘要:今天发现有库级字符集和表级字符集,实验了下发现,库级字符集是该库内表的默认字符集,当创建表时,如果未指定字符集,默认使用该表所属库的字符集。表也可使用不同于所属库的字符集。 MySQL对于字符集的指定可以细化到一个数据库,一张表,一列,应该用什么字符集。 但是,传统的程序在创建数据库和数据表时并...
        
阅读全文
 
        
            
            
摘要:首先找到这里的解决方法,count = cursor.fetchall()for i in count: idc_a = i[0] if isinstance(idc_a, unicode): idc_a = idc_a.encode('utf-8') print idc_a但只能解决查询显示乱码问题后来继续查资料,找到了这里,解决方法很简单拿,和数据库建立连接后,执行:db.set_character_set('utf8')dbc.execute('SET NAMES utf8;')dbc.execute('SET CHARACTER 
        
阅读全文
 
        
            
            
摘要://主键 alter table tabelname add new_field_id int(5) unsigned default 0 not null auto_increment ,add primary key (new_field_id);//增加一个新列 alter table t2 add d timestamp;alter table infos add ex tinyint not null default '0';//删除列 alter table t2 drop column c;//重命名列 alter table t1 change a b inte
        
阅读全文
 
        
            
            
摘要:【本篇文章主要解决的是,MySQL事务创建之后,没有运行的问题】首先从这里开始:http://www.w3schools.in/mysql/event-schedule/,创建了基本的MySQL事务,然后查看了下事务,如下第二条,【这里图片是所有操作后的截图】但遇到一个问题,事实上事务并未被执行,查资料,找到以下文章:http://hi.baidu.com/zhulin014/item/458a3825e3cbb93194f62b12,意外收获,学到了 set autocommit = 0/1; || 手动调用commit; 提交 show variables like 'autoco
        
阅读全文
 
        
            
            
摘要:ERROR 1396 (HY000): Operation CREATE USER failed for 'jack'@'localhost' drop user jack@'localhost'; flush privileges; create user admin@localhost identified by 'admins_password' select host, user from mysql.user;ERROR 2003 (HY000): Can't connect to MySQL server on
        
阅读全文
 
        
            
            
摘要:MySQL ERROR 1045 (28000): Access denied for user 'bill'@'localhost' (using password: YES)问题背景: 数据库中已创建了smartwin@'%'的用户,当以smartwin登录时,总是出错(前提密码输入正确):而通过指定host地址登录则可以成功,SELECTUSER(),CURRENT_USER(); USER() reports how you attempted to authenticate in MySQL CURRENT_USER() reports
        
阅读全文
 
        
            
            
摘要:MySQL Change root PasswordHow do I change MySQL root password under Linux, FreeBSD, OpenBSD and UNIX like operating system over ssh / telnet session? Setting up MySQL password is one of the essential tasks. By default root user is MySQL admin account user. Please note that the Linux / UNIX root acco
        
阅读全文
 
        
            
            
摘要:错误日志: 错误日志在Mysql数据库中很重要,它记录着mysqld启动和停止,以及服务器在运行过程中发生的任何错误的相关信息。 1.配置信息 --log-error=[file-name]用来指定错误日志存放的位置。 如果没有指定[file-name],默认hostname.err做为文件名,默认存放在DATADIR目录中。 也可以将log-error配置到my.cnf文件中,这样就省去了每次在启动mysqld时都手工指定--log-error.例如: [mysql@test2]$ vi /etc/my.cnf # The MySQL server [mysqld] ......
        
阅读全文
 
        
            
            
摘要:1,创建索引对于查询占主要的应用来说,索引显得尤为重要。很多时候性能问题很简单的就是因为我们忘了添加索引而造成的,或者说没有添加更为有效的索引导致。如果不加索引的话,那么查找任何哪怕只是一条特定的数据都会进行一次全表扫描,如果一张表的数据量很大而符合条件的结果又很少,那么不加索引会引起致命的性能下降。但是也不是什么情况都非得建索引不可,比如性别可能就只有两个值,建索引不仅没什么优势,还会影响到更新速度,这被称为过度索引。2,复合索引比如有一条语句是这样的:select * from users where area=’beijing’ and age=22;如果我们是在area和age上分别创
        
阅读全文
 
        
            
            
摘要:创建function时出错信息:ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)原因:这是我们开启了bin-log, 我们就必须指定我们的函数是否是1 DETERMINISTIC 不确定的2 NO SQL 没有SQl
        
阅读全文
 
        
            
            
摘要:mysql触发器和定时器混用发生错误创建定时器: create event myevent on schedule every 30 second starts current_timestamp do update manager set b_hostState=0 where now()-interval 80 second> d_lastUpdate; 创建触发器: delimiter | create trigger manager_bu before update on manager for each row begin set n...
        
阅读全文
 
        
            
            
摘要:触发器是一种特殊的存储过程,它在插入,删除或修改特定表中的数据时触发执行,它比数据库本身标准的功能有更精细和更复杂的数据控制能力。数据库触发器有以下的作用:1.安全性。可以基于数据库的值使用户具有操作数据库的某种权利。# 可以基于时间限制用户的操作,例如不允许下班后和节假日修改数据库数据。# 可以基于数据库中的数据限制用户的操作,例如不允许股票的价格的升幅一次超过10%。2.审计。可以跟踪用户对数据库的操作。# 审计用户操作数据库的语句。# 把用户对数据库的更新写入审计表。3.实现复杂的数据完整性规则# 实现非标准的数据完整性检查和约束。触发器可产生比规则更为复杂的限制。与规则不同,触发器可以
        
阅读全文
 
        
            
            
摘要:CREATE TRIGGER trigger_name trigger_time trigger_eventON tbl_name FOR EACH ROW trigger_stmtOLD列是只读的,NEW列则可以在触发器程序中再次赋值。查看触发器查看触发器语法如下,如果知道触发器所在数据库,以及触发器名称等具体信息:SHOW TRIGGERS from SF_User like "usermaps%"; //查看SF_User库上名称和usermaps%匹配的触发器如果不了解触发器的具体的信息,或者需要查看数据库上所有触发器,如下:SHOW TRIGGERS; //查看所
        
阅读全文
 
        
            
            
摘要:The MySQL Benchmark Suite、MySQL super-smack、MyBench、mysqlslap 。除了第一个为MySQL性能测试工具,其他两个都为压力测试工具。 1. The MySQL Benchmark Suite 这个测试工具是随着MySQL绑定发行的,基于Perl语言和其中的两个模块:DBI和Benchmark。如果有需要,它支持所有支持DBI驱动的数据库。可以通过修改bench-init.pl的选项以符合需要。另外提醒的是,它不支持多CPU。 进行测试时,执行run-all-tests脚本,具体的命令选项请看README。 2. MySQL sup...
        
阅读全文
 
        
            
            
摘要:查询数据库中的存储过程方法一: select `name` from mysql.proc where db = 'your_db_name' and `type` = 'PROCEDURE'方法二: show procedure status;查看存储过程或函数的创建代码show create procedure proc_name;show create function func_name;查询数据库中的存储过程和函数方法一: select `name` from mysql.proc where db = 'your_db_name' a
        
阅读全文
 
        
            
            
摘要:oracle数据库中对外键使用索引。在oracle数据库中,当对父表(上面例子中的dep表)进行更新的时候,如果在子表(上面例子中的student表)中的外键没有使用索引,则在更新 的过程中整个子表将被锁定,而往往实际上并不需要锁定整个子表,而仅仅需要锁定子表中的几条记录。这样就会大大影响数据库访问的并发性,甚至有可能造成死 锁的情况。除了锁表的问题之外,一个没有使用索引的外键在下面两种情况下表现的也十分糟糕:当使用ON DELETE CASCADE删除父表中的记录时,如果在子表中的外键没有使用索引则当执行该操作时会对子表进行全表的扫描,而事实上这个全表的扫描是不需要的。更坏的情况是,如果删除
        
阅读全文
 
        
            
            
摘要:#/sql/Main.cc line 22 //main 函数 int main(int argc, char **argv) { return mysqld_main(argc, argv); } #/sql/mysqld.cc line 4808 int mysqld_main(int argc, char **argv) { /* Start as standalone server */ Service.my_argc=argc; Service.my_argv=argv; mysql_service(NULL); } #/sql/mysqld.cc line 4709 i...
        
阅读全文
 
        
            
            
摘要:引言本文主要介绍Mysql主要的调用流程,将从代码的角度来看一个从用户发出的"select * from test" SQL命令在服务器内部是如何被执行的。从我个人的经验来看,阅读理解大规模项目的代码最重要的两个方面,一是了解主要的数据结构,二是了解数据流,在这里主要是调用流程。把这两个主线把握住以后,大部分代码都是比较容易阅读的,Mysql的源代码属于比较好读的类型,因为函数的调用关系比较明确。难读的代码一般都充斥着大量的回调、异步调用,很可能你极难找到某个函数在哪里或什么时候被调用了。当然,算法的实现代码也很难读。幸好Mysql不是那种难读的类型,所以我们也不要害怕,大
        
阅读全文
 
        
            
            
摘要:MySQL启动流程主要代码在sql/mysqld.cc中,精简后的代码如下:int main(int argc, char **argv) //标准入口函数MY_INIT(argv[0]);//调用mysys/My_init.c->my_init(),初始化mysql内部的系统库logger.init_base(); //初始化日志功能init_common_variables(MYSQL_CONFIG_NAME,argc, argv, load_default_groups) //调用load_defaults(conf_file_name, groups, &argc, &a
        
阅读全文
 
        
            
            
摘要:接着进入Commander Dispatcher模块,命令分发模块,大概就是一个switch case的过程,根据不同的命令,进行不同的操作。这个模块又会间接关联到Query Cache模块和Logging Module,即查询缓存模块和日志模块。Query Cache模块个人感觉至少包含结果集缓存模块,至于有木有执行计划缓存,这个就不清楚了,还需要进入源码慢慢看来。Logging Module就是传说中的日志了,日志包括redo和undo两方面吧,日志系统是一个database必备的,是实现事务特性的重要手段,而事务便是 database和file system的根本区别,不要小瞧了Log.
        
阅读全文