
mysql
文章平均质量分 59
zm2714
这个作者很懒,什么都没留下…
展开
-
批处理自动备份mySQL数据库和自动还原mySQL数据库
产品上线,数据库备份就是不得不考虑的问题。下面说说我的数据库备份策略。我的服务器为Win2003,项目的数据库引擎采用的是MyIsam,数量大并不大,运营到现在1个月,数据库大小6M。为了防止出现意外,数据库每天都需要备份,当然,如果每天手工备份,那就要把人烦死。所以我就写了下面的批处理文件,通过Win2003系统的计划任务,在凌晨2点开始执行批处理,备份数据库。批处理中我采用了两种方法,一种原创 2012-08-31 15:21:09 · 8818 阅读 · 0 评论 -
使用PDO查询Mysql来避免SQL注入风险
当我们使用传统的 mysql_connect 、mysql_query方法来连接查询数据库时,如果过滤不严,就有SQL注入风险,导致网站被攻击,失去控制。虽然可以用mysql_real_escape_string()函数过滤用户提交的值,但是也有缺陷。而使用PHP的PDO扩展的 prepare 方法,就可以避免sql injection 风险。 PDO(PHP Data Obje转载 2013-04-03 08:51:36 · 1977 阅读 · 0 评论 -
mysql 慢查询日志
慢查询定义及作用慢查询日志,顾名思义,就是查询慢的日志,是指mysql记录所有执行超过long_query_time参数设定的时间阈值的SQL语句的日志。该日志能为SQL语句的优化带来很好的帮助。默认情况下,慢查询日志是关闭的,要使用慢查询日志功能,首先要开启慢查询日志功能。开启慢查询日志在mysql的配置文件中的mysqld下方添加以下参数log-slow-queries =原创 2013-01-16 21:58:26 · 13430 阅读 · 0 评论 -
使用ezsql,更新记录时,新记录与原记录相同时的返回值
问题来源在CI项目中,集成了ezsql库。修改某一条数据时,如果数据没有任何修改,提交后,由于提交的内容与原内容相同,所以$this->ezsql->query($sql)的结果返回的是0。如果提交的内容字段与原字段不符,那么更新成功 ,则返回的结果为1。由于更新数据,$this->ezsql->query($sql) 返回的结果为影响的记录数。查看源码得知,实际获取该结果的是通过:mysql原创 2013-01-09 15:42:11 · 3118 阅读 · 0 评论 -
MySql关键字
<!--table {background-color:#FAFAD2}td {background-color:#FFFAF0; padding-left:6px}-->ADDALLALTERANALYZEANDASASCASENSITIVEBEFOREBETWEENBIGINT转载 2013-01-08 19:32:20 · 1224 阅读 · 0 评论 -
AUTO_INCREMENT列在InnoDB里如何工作
如果你为一个表指定AUTO_INCREMENT列,在数据词典里的InnoDB表句柄包含一个名为自动增长计数器的计数器,它被用在为该列赋新值。自动增长计数器仅被存储在主内存中,而不是存在磁盘上。 InnoDB使用下列算法来为包含一个名为ai_col的AUTO_INCREMENT列的表T初始化自动增长计数器:服务器启动之后,当一个用户对表T做插入之时,InnoDB执行等价如下语句的动作:SEL转载 2013-01-08 17:19:25 · 1996 阅读 · 0 评论 -
MySQL - ON DUPLICATE KEY UPDATE
如果在INSERT语句末尾指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则执行旧行UPDATE;如果不会导致唯一值列重复的问题,则插入新行。例如,如果列a被定义为UNIQUE,并且包含值1,则以下两个语句具有相同的效果: INSERT INTO TABLE (a,b,c) VALUES (1,2,3) ON转载 2013-01-08 16:33:36 · 1105 阅读 · 0 评论 -
primary key与unique的区别
定义了 UNIQUE 约束的字段中不能包含重复值,可以为一个或多个字段定义UNIQUE 约束。因此,UNIQUE 即可以在字段级也可以在表级定义, 在UNIQUED 约束的字段上可以包含空值。ORACLE自动会为具有PRIMARY KEY 约束的字段(主码字段)建立一个唯一索引和一个NOT NULL约束,定义PRIMARY KEY约束时可以为它的索引; UNIQUED 可空,可以在原创 2013-01-08 19:31:06 · 67605 阅读 · 3 评论 -
mysql的innodb扩容、ibdata1 瘦身
mysql的innodb扩容为了添加一个数据文件到表空间中,首先要关闭 MySQL 数据库,编辑 my.cnf 文件,确认innodb ibdata文件的实际情况和my.cnf的配置是否一致,这里有两种情况:my.cnf的配置innodb_data_file_path=ibdata1:10G;ibdata2:10G:autoextend如果当前数据库正在使用ibdata1,或者使用原创 2013-01-08 11:09:29 · 27992 阅读 · 0 评论 -
php mysql事务
这里记录一下php操作mysql事务的一些知识要知道,MySQL默认的行为是在每条SQL语句执行后执行一个COMMIT语句,从而有效的将每条语句独立为一个事务。但是,在使用事务时,是需要执行多条sql语句的,那么针对执行多条SQL语句来完成一个事务有两种办法:1、关闭自动提交如果SET AUTOCOMMIT=0;也就是关闭了自动提交,那么任何commit或rollback语句都可以触发原创 2013-01-06 15:46:19 · 4090 阅读 · 0 评论 -
innodb引擎frm文件被删除成为“孤表”的解决办法
今天发现了一个很意外的问题。。。。090918 19:07:43 InnoDB: Error: table 'ceshi3/stest3'InnoDB: in InnoDB data dictionary has tablespace id 6,InnoDB: but tablespace with that id or name does not exist. HaveIn转载 2013-01-06 22:16:37 · 9453 阅读 · 0 评论 -
释放已删除的InnoDB磁盘空间
Innodb数据库对于已经删除的数据只是标记为删除,并不真正释放所占用的磁盘空间,这就导致InnoDB数据库文件不断增长。如果想彻底释放这些已经删除的数据,需要把数据库导出,删除InnoDB数据库文件,然后再倒入。 下面是基本的步骤: 1 使用mysqldump命令将InnoDB数据库导出2 停止MySQL3 删除所有InnoDB数据库文件和日志4 启动MySQL并自动重建Inno转载 2013-01-06 19:28:40 · 5307 阅读 · 0 评论 -
MySQL终极配置解决UTF8编码出现的乱码问题
有人经常为MySQL存取数据涉及到的乱码感到烦心,其实解决这个问题非常简单。只需四步解决问题:一、配置My.ini文件[client]port=3306default-character-set=utf8[mysql]default-character-set=utf8[mysqld]default-character-set=utf8在My.ini文件中,在字原创 2012-09-13 15:38:30 · 17130 阅读 · 0 评论 -
Warning(1265)Data truncated for column 'v_mmi' at row 1
今天准备优化一个项目的查询。欲在创建帐号的存储过程中增加一个日期索引,在执行该存储过程时发现以下警告信息:存储过程部分代码如下BEGINdeclare uid int default 0;declare v_password char(32);declare v_mmi char(32);declare v_date date default curdate();d原创 2012-09-06 11:40:53 · 60194 阅读 · 0 评论 -
索引列上计算引起的索引失效及优化措施以及注意事项
两个示例例子一表结构DROP TABLE IF EXISTS `account`;CREATE TABLE IF NOT EXISTS `account` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `account` int(10) unsigned NOT NULL, `password` char(32)原创 2012-08-21 14:20:17 · 7039 阅读 · 3 评论 -
MySQL优化GROUP BY-松散索引扫描与紧凑索引扫描
满足GROUP BY子句的最一般的方法是扫描整个表并创建一个新的临时表,表中每个组的所有行应为连续的,然后使用该临时表来找到组并应用累积函数(如果有)。在某些情况中,MySQL能够做得更好,即通过索引访问而不用创建临时表。 为GROUP BY使用索引的最重要的前提条件是所有GROUP BY列引用同一索引的属性,并且索引按顺序保存其关键字。是否用索引访问来代替临时表的使用还取决于在查原创 2012-08-20 16:51:38 · 34955 阅读 · 0 评论 -
使用TIMESTAMPDIFF计算两个时间戳之间的时间间隔需要注意的细节
问题阐述A表中有字段如下:DROP TABLE IF EXISTS `A`;CREATE TABLE IF NOT EXISTS `A` ( `userId` int(10) unsigned NOT NULL, `flag_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP, `dayCount` int(10) unsigned原创 2012-08-22 16:23:40 · 52768 阅读 · 1 评论 -
mysql链接异常SQL Error(2013)的解决办法
现象描述今天用heidisql登陆虚拟机的mysql,登陆不上去。等待约一两分钟后出现错误提示:SQL Error (2013): Lost connection to MySQL server at 'waiting for initial communication packet', system error: 0,如下图所示:开始以为是远程TCP/IP root只能通过loca原创 2012-08-31 16:36:01 · 56484 阅读 · 3 评论 -
php中防止SQL注入的最好方法是什么?
如果用户输入的是直接插入到一个SQL语句中的查询,应用程序会很容易受到SQL注入,例如下面的例子:$unsafe_variable = $_POST['user_input'];mysql_query("INSERT INTO table (column) VALUES ('" . $unsafe_variable . "')");这是因为用户可以输入类似VALUE"); DROP TABL转载 2013-04-03 09:04:10 · 1736 阅读 · 0 评论