Tag: MySQL

MySQL binary log rotate

如果开启了 MySQL binary log, 在 MySQL 资料目录里面会有很多这样的档案: mysql-bin.000001 mysql-bin.000002 mysql-bin.000003 mysql-bin.000004 mysql-bin.000005 MySQL 在默认情况下不会删除旧 binary log, 可以透过设定 my.cnf 进行日志轮替, 开启 my.cnf, 加入这一行在 区块内: expire_logs_days = 14 expire_logs_days 是指定 binary …

MySQL 数据库备份及还原

MySQL 的备份可以透过直接复制 MySQL 数据库目录(冷备份),或者用 mysqldump 汇出数据库的完整 SQL 语句实现(热备份),以下是两种方法的优/缺点,以及实现方法: 冷备份 这种方法最大的好处是简单,备份只要直接复制数据库目录,还原则只要将备份目录抄回原来位置便可以,而且速度会较快。但缺点是冷备份时必须要关闭 MySQL,如果 MySQL 在执行时进行冷备份,备份档可能会有不完整及损毁的情况,以下是冷备份步骤: 1. 关闭 MySQL: # /etc/rc.d/init.d/mysqld stop 2. 把 MySQL 的资料目录(包括 ibdata1, ib_logfile0, ib_logfile1 等)完整复制到另一个硬盘里面。 3. 开启 …

MySQL 开启支援 InnoDB

MySQL 在 5.1 版本开始默认没有支援 InnoDB, 如果用 yum 安装的话, Redhat 会处理好 InnoDB 支援, 但如果自行编译安装的话, 便需要作出一点改动。以前我编译 MySQL 会用以下参数编译: 这样会安装 MySQL 到 /usr/local/mysql51, 并安装所有额外的 charsets, 如果要在 MySQL 5.1 后支援 InnoDB, 需要加入支援 InnoDB …

MySQL 的 Replace 功能

要对 MySQL 数据库内的资料替换字串,可以借助 PHP 的 str_replace(),但这实在太麻烦了,其实MySQL 已内建了这个功能,以下语句可以将 资料表的 字段作 replace 动作, 是搜索字串; 是替换字串。 update set =replace(,’‘,’‘); 如果不想将整个资料表的字段资料更换,可以在最后用 where 做条件选择,例如: update set =replace(,’‘,’‘) where zip=’852′; 以上语句跟第一句的分别是,第二句只会对字段 “zip” 为 “852″ 的纪录作更改。

MySQL 的 Safe Update Mode

最近要更新 MySQL 资料表内其中一个字段的所有资料,只是用以下这个 SQL 指令: UPDATE table_name SET field_name=0; 有个 MySQL 回传的错误讯息为: “You are using safe update mode and you tried to update a table without a WHERE clause …

MySQL 字串连接

有时我们需要将不同字段的资料连接,或者在现在的资料后面加入内容,当然可以先从 MySQL 汇出资料,再把连接好的字串更新到 MySQL,但这未免太麻烦,另一个较方便的方法是借助 CONCAT() 实现,CONCAT() 语法为: CONCAT(string_1, string_2, string_3, …) MySQL 的 CONCAT() 支援多个字串连接,但在 Oracle 里面只可以有两个参数,要实现多个字串连接可以用 ‘||’ 来实现。以下是 CONCAT() 的使用实例: update table_name set email=CONCAT(email, ‘:me@email.com’) where id=’1′; 以上 …

MySQL 重设 root 忘记密码

如果忘记了 MySQL 的 root 密码,可以用以下方法重新设定: 1. 关闭 MySQL 服务器。 2. 用以下指令启动 MySQL,以跳过检查权限的资料表 mysqld_safe –skip-grant-tables &< 3. 现在己经可以用空密码进入 MySQL mysql -u root 4. 进入 MySQL 后执行以下指令更改 mysql root 密码: mysql> …

MySQL: [ERROR] Unknown character set 问题

早前升级一台主机的 MySQL Server,升级后发现部份资料表无法开启,报出的错误讯息是: Unknown character set: ‘BIG5′ 出现这个问题的原因是新版本 MySQL 安装时没有安装额外的字集,而对上一个版本的 MySQL 是用 YUM 安装,所有透过套件工具安装的 MySQL 也会默认安装所有字集,解决方法是重新编译 MySQL 并加上所有的字集的选择 –with-extra-charsets=complex,编译语法如下: ./configure — prefix=/usr/local/mysql –with-extra-charsets=complex 如果在 FreeBSD 遇上这个问题,而 FreeBSD 内的 MySQL …

编译及安装 MySQL

虽然在 Unix Like 环境已经有很多预先编译好的软件,例如 rpm 及 deb,但我较喜欢使用编译的方法安装软件,尤其是 server,以下是编译及安装 MySQL 4.1.18 的方法: 1. 到 MySQL Mirror 下载 source code 并储存到主机上。 2. 执行以下指令: 3. MySQL 已经安装完成,现在需要改变 mysql 目录的 owner: 4. 执行以上指令后,便可以启动 …

Python 连接 MySQL

MySQL 是十分流行的开源数据库系统,很多网站也是使用 MySQL 作为后台资料储存,而 Python 要连接 MySQL 可以使用 MySQL 模组。MySQLdb 模组可以让 Python 程式连线到 MySQL server, 执行 SQL 语句及撷取资料等。 开始前要确定系统内的 Python 有安装 MySQLdb 模式,你可以 Python command line interpreter 检查,在指令模式输入 python,然后便可以开始检查: …