2009-02-02 04:52
查看1,518次
16 Comments »
phpmyadmin是一件很方便的在线管理MySQL数据库的工具,但对于较大的数据库的导出和导入却显得力不从心。特别是导入工作,通常2M已经是它的极限了。
这时用MySQL的原生工具就能很好地解决这些问题了。
假设我们要对一个名为blog的数据库进行导出和导入的操作
导出:
mysqldump -u数据库用户名 -p密码 blog > 路径/导出名.sql
具体的操作是这样的,打开命令提示符(这里都以Windows系统为例),进入mysql安装所在目录中的bin文件夹(因为我的mysql没有安装为本地服务,所以要进行这一步),最后输入运行上面的那条命令即可。
导入:
mysql -u数据库用户名 -p密码 blog < 路径/数据库名.sql
操作如上,用命令提示符进入bin文件夹后,输入运行该命令即可。
不是什么新奇的技术,只是做个记录,利于日后的参考。
2009-01-01 09:04
查看1,623次
17 Comments »
二零零九年已经来到,又是时候对过去的一年做一个总结了。
当然,自然少不了对二零零九年来个展望啦。(希望自己能做到吧
)
二零零八年发布文章数:107篇
数量比上一年有了明显的提高,但自己感觉还是少了点,所以希望接下来的二零零九年能发布更多的文章。
#对应的得到2008年发布文章数的SQL语句
SELECT COUNT( * )
FROM `wp_posts`
WHERE post_date >= '2008-01-01'
AND post_date < '2009-01-01'
AND post_type = 'post'
AND post_status = 'publish'
收到的留言(包括trackback与pingback):940个
得益于国人在WordPress留言系统上的改进与提高,留言数有了很大的提高。(当然冰古自己的留言都占了一大部分
)
二零零九年的希望当然是越多越好啦
(这个任务希望大家帮帮忙)
#对应的得到2008年收到留言总数的SQL语句
SELECT COUNT( * )
FROM `wp_comments`
WHERE comment_date >= '2008-01-01'
AND comment_date < '2009-01-01'
AND comment_approved =1
二零零八年发表并收到留言数量前十的文章:
- godaddy域名超级优惠码 → 留言数:38
- WordPress中用Ctrl+Enter提交留言 → 留言数:37
- 《命令与征服:红色警戒3》电驴下载 → 留言数:29
- 《归来!悟空和他的朋友们》QQ中转站下载 → 留言数:26
- 博客接龙大赛:Wordpress十八摸 → 留言数:25
- 长见识啊 → 留言数:25
- Gmail邮件小表情 → 留言数:25
- 常驻我电脑的国产软件 → 留言数:24
- WordPress主题:Simple.1 → 留言数:19
- 使用Netbeans开发WordPress → 留言数:19
#对应的收到留言最多的文章的SQL语句
#wordpress 2.7适用,其他版本未测试
#如不能使用,可以参考:http://bingu.net/425/some-sql-for-2006-blog-stats/
SELECT `ID`, `post_date`, `post_title`, `comment_count`, `post_name`
FROM `wp_posts`
WHERE post_date >= '2008-01-01'
AND post_date < '2009-01-01'
AND post_type = 'post'
AND post_status = 'publish'
ORDER BY `wp_posts`.`comment_count` DESC
附上使用GaMerZ WP-PostViews插件的查看数最多统计SQL语句:
SELECT DISTINCT meta_value, ID, post_title, post_name, post_date, comment_count
FROM `wp_posts` , `wp_postmeta`
WHERE post_id = ID
AND post_date >= '2008-01-01'
AND post_date < '2009-01-01'
AND post_type = 'post'
AND post_status = 'publish'
AND meta_key = 'views'
ORDER BY cast( `meta_value` AS DECIMAL ) DESC
最后,感谢各位的留言支持:
最勇猛的五位兄弟(姐妹?)是
- wayne → 留言数:25
- Donald → 留言数:24
- Yacca → 留言数:19
- iColor → 留言数:18
- JoBru → 留言数:18
#对应留言最多的SQL语句
SELECT DISTINCT concat( '<a href="', comment_author_url, '">', comment_author, '</a>' ) , count( comment_author ) AS num_author
FROM `wp_comments`
WHERE comment_date >= '2008-01-01'
AND comment_date < '2009-01-01'
AND comment_author != '冰古'#去掉自己吧
AND comment_type != 'trackback'
AND comment_type != 'pingback'
AND comment_approved =1
GROUP BY comment_author, comment_author_email
ORDER BY num_author DESC
2008-05-21 07:54
查看6,836次
1 Comment »
用上umVPS后,很多时候在虚拟主机不用自己动手的事情都要自己搞定了,例如:PHP和MySQL的升级。因为不用自己动手,也动不了,所以冰古不太清楚虚拟主机的PHP和MySQL是不是会及时地更新。但用VPS,可以动手玩一下也保证安全,冰古是很乐意进行更新的。以下就是用YUM升级CentOS系统中PHP和MySQL的过程:
yum是CentOS系统自带的用于方便地添加/删除/更新RPM包的工具,它能自动解决包的倚赖性问题。
用yum更新PHP,只需用一条命令就可以搞定:
#yum update php
但问题来了,使用此命令后,系统告诉我,没有发现可更新的包。而当前的PHP版本只是5.2.1,PHP官方已经更新到5.2.6了。
经过一番询问,才知道原来CentOS系统的源里PHP仍旧是5.2.1,需要额外的源才能升级PHP。
根据外国网友的介绍,冰古添加了额外的源:
登录SSH后依次运行下列命令:
#rpm --import http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka
#vi /etc/yum.repos.d/utterramblings.repo #文中这里是使用nano,但VPS不能启动nano,用vi代替也是可以的
在打开的文档中加入下面内容:
[utterramblings]
name=Jason's Utter Ramblings Repo
baseurl=http://www.jasonlitka.com/media/EL$releasever/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka
保存。
再次运行下面的命令就可以完成php的升级了
#yum update php
同理,运行下面命令,升级mysql
#yum update mysql
2008-02-06 09:37
查看3,939次
2 Comments »
从旧主机搬到新主机最烦人的就是乱码问题。这也是个由来已久的问题了。
从wordpress 2.2开始,wordpress提供DB_CHARSET和DB_COLLATE这两个参数以便我们更好地解决这个问题。但似乎这些并不够,仍旧会产生这样那样的问题,如Warning: Invalid argument supplied for foreach() in D:\xampp\htdocs\wordpress\wp-includes\classes.php on line 88。最根本的解决应该还是把数据库里的数据由latin1_swedish_ci格式转换成utf8_general_ci格式。
wordpress官方的论坛就像wordpress那样,很有人气。你遇到的问题,很可能里面已经有人讨论过并已经解决了。乱码问题这个很热门的问题,当然也是完美地解决了地。
以下方法涉及数据库修改,请在备份数据库后操作!
解决的方法是这样的:
1. 下载g30rg3_x提供的这个plugin;
2. 确保你的wordpress是2.2.x或2.1.x,因为这个plugin只支持这两个系列的版本;
3. 上传到plugins文件夹并激活;
4. 到’UTF-8 Database Converter’菜单中按照提示进行剩余操作即可。
上面的办法多了不少的限制,如wordpress的版本需是2.2.x或2.1.x,并能保证你的wordpress还能登录!(是的,很可能你的wordpress这时已经不能登录了。)
这时我们可以借用一下g30rg3_x提供的UTF8_DB_Converter_DoIt()函数:
<?php
define('DB_NAME', 'putyourdbnamehere'); // 数据库名
define('DB_USER', 'usernamehere'); // MySQL用户名
define('DB_PASSWORD', 'yourpasswordhere'); // 密码
define('DB_HOST', 'localhost'); // 很大可能你无需修改此项
function UTF8_DB_Converter_DoIt() {
$tables = array();
$tables_with_fields = array();
// Since we cannot use the WordPress Database Abstraction Class (wp-db.php),
// we have to make an a stand-alone/direct connection to the database.
$link_id = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) or die('Error establishing a database connection');
mysql_select_db(DB_NAME, $link_id);
// Gathering information about tables and all the text/string fields that can be affected
// during the conversion to UTF-8.
$resource = mysql_query("SHOW TABLES", $link_id);
while ( $result = mysql_fetch_row($resource) )
$tables[] = $result[0];
if ( !empty($tables) ) {
foreach ( (array) $tables as $table ) {
$resource = mysql_query("EXPLAIN $table", $link_id);
while ( $result = mysql_fetch_assoc($resource) ) {
if ( preg_match('/(char)|(text)|(enum)|(set)/', $result['Type']) )
$tables_with_fields[$table][$result['Field']] = $result['Type'] . " " . ( "YES" == $result['Null'] ? "" : "NOT " ) . "NULL " . ( !is_null($result['Default']) ? "DEFAULT '". $result['Default'] ."'" : "" );
}
}
// Change all text/string fields of the tables to their corresponding binary text/string representations.
foreach ( (array) $tables as $table )
mysql_query("ALTER TABLE $table CONVERT TO CHARACTER SET binary", $link_id);
// Change database and tables to UTF-8 Character set.
mysql_query("ALTER DATABASE " . DB_NAME . " CHARACTER SET utf8", $link_id);
foreach ( (array) $tables as $table )
mysql_query("ALTER TABLE $table CONVERT TO CHARACTER SET utf8", $link_id);
// Return all binary text/string fields previously changed to their original representations.
foreach ( (array) $tables_with_fields as $table => $fields ) {
foreach ( (array) $fields as $field_type => $field_options ) {
mysql_query("ALTER TABLE $table MODIFY $field_type $field_options", $link_id);
}
}
// Optimize tables and finally close the mysql link.
foreach ( (array) $tables as $table )
mysql_query("OPTIMIZE TABLE $table", $link_id);
mysql_close($link_id);
} else {
die('<strong>There are no tables?</strong>');
}
return true;
}
UTF8_DB_Converter_DoIt();
?>
现在你把上面代码保存到一个php文件中,上传至空间并运行,如无意外你的数据已经完成了latin1_swedish_ci到utf8_general_ci转换。
2007-04-25 01:03
查看5,600次
6 Comments »
在查找“用SSH备份mysql”时,发现的——“Dreamhost下每天自动备份mysql数据库,并发送到指定邮箱”。
觉得比wordpress的一些备份plugin好,决定启用。
1、用putty登录你的dreamhost;
2、运行
cd ~
mkdir backups
mkdir backups/archives
3、新建一个名为“mysql.sh”的文件,并输入下列代码:
#!/bin/bash
cd /home/username/backups/ #username改为你登录ssh时用的用户名
mkdir mysql
suffix=$(date +%y%m%d)
mysqldump --opt -uUser -pPass -h mysqlA.domain.com db_nameA > mysql/db_nameA.$suffix.sql #User为数据库用户名,pass为数据库用户密码,mysqlA.domain.com为数据库地址,db_nameA为数据库名,请根据你的情况修改。
tar zcf archives/mysql_backup.$suffix.tar.gz mysql/*
rm -r mysql/
mutt you@domain.com -a /home/username/backups/archives/mysql_backup.$suffix.tar -s "MySQL Backup" #you@domain.com修改为你准备用于收取备份压缩包的邮箱。
保存后,上传到backups文件夹中。
4、在putty中运行
dos2unix ~/backups/mysql.sh
chmod 755 ~/backups/mysql.sh
5、在Dreamhost的panel,Goodies->Cron Jobs中新建Cron任务,选项设置为
Command to run: /home/User/backups/mysql.sh
#User改为你登录SSH时用的用户名。
时间照下图设置,将在北京时间每天的24:10左右运行备份MySQL程序,并发送备份压缩包到你指定的邮箱。

6、完成!
参考文献:wiki.dreamhost.com

2005-12-11 12:39
查看8,417次
3 Comments »
昨天下了wamp5,准备再好好学学PHP和玩一下wordpress。
没想到一来就弄个麻烦的~从空间上备份的数据,导入到本地数据库后,竟然是一堆乱码(形如:????),自己是搞鼓了一整天(试了几乎所以相关的utf8编码都是不行)也是没搞定。
自己搞不定就找人问吧。来到海豚在google论坛上建的论坛上发言,下午海豚告诉我在苛世录上可找到解决办法,跟去→桑林志、Windix’s Weblog→阿修的部落格
原因是:
从MySQL 4.1开始引入的多语言支持确实很棒,而且一些特性已经超过了其他的数据库系统。不过我在测试过程中发现使用适用于MySQL 4.1之前的PHP语句操作MySQL数据库会造成乱码,即使是设置过了表字符集也是如此。我读了一下新的MySQL在线手册中第十章”Character Set Support“后终于找到了解决方法并测试通过。
MySQL 4.1的字符集支持(Character Set Support)有两个方面:字符集(Character set)和排序方式(Collation)。对于字符集的支持细化到四个层次: 服务器(server),数据库(database),数据表(table)和连接(connection)。
当我们按照原来的方式通过PHP存取MySQL数据库时,就算设置了表的默认字符集为utf8并且通过UTF-8编码发送查询,你会发现存入数据库的仍然是乱码。问题就出在这个connection连接层上。解决方法是在发送查询前执行一下下面这句:
SET NAMES 'utf8';
解决办法是:
一、导入数据时,新建的数据库collation (校勘/整理)项选择为utf8_general_ci;
二、修改wp-includes/wp-db.php为
$this->dbh = @mysql_connect($dbhost,$dbuser,$dbpassword);
//加上下面這行
$this->query("SET NAMES 'utf8' ");
至此,问题解决。