Mysql

关于 MySQL enum 类型的一些测试

背景: 在开发项目时通常会遇到一些状态字段,例如订单的状态有 待支付、已支付、已关闭、已退款 等,我以前做的项目都是把这些状态用数字存在数据库中,然后在 php 代码中用常量来维护一份映射表,例如: const STATUS_PENDING = 0; const STATUS_PAID = 1; const STATUS_CLOSED = 2; const STATUS_REFUNDED = 3; 但是在实际使用过程中发现并不是那么好用,由于各种原因(追查 bug、

  • Leo Chen
    Leo Chen
4 min read
Mysql

登录mysql,进程自动结束的一种可能

昨天发现有台服务器mysql挂了,去服务器上看日志,没有发现有任何的error。 于是直接启动mysql,但发现一个很神奇的现象,只要一登录Mysql,mysqld进程立马退出,日志里也没有任何error,显示的是normal shutdown。 重新编译安装也是一样的问题。没办法,换了台机器搭建了mysql。 今天我又登录到原来那台服务器上写一段脚本,脚本里面用到了当前时间,结果发现打出来的unix时间戳是142开头的。 立马发现有问题,现在的unix时间戳应该是137开头,用date命令看下,居然是2421年了。 于是联想到mysql的问题可能是因为时间错误导致的。 date -s’2013-07-25 17:29:30′ 再启动mysql,登录,正常!

  • Leo Chen
    Leo Chen
1 min read
Mysql

PostgreSQL与MySQL比较

特性 MySQL PostgreSQL 实例 通过执行 MySQL 命令(mysqld)启动实例。一个实例可以管理一个或多个数据库。一台服务器可以运行多个 mysqld 实例。一个实例管理器可以监视 mysqld 的各个实例。 通过执行 Postmaster 进程(pg_ctl)启动实例。一个实例可以管理一个或多个数据库,这些数据库组成一个集群。集群是磁盘上的一个区域,这个区域在安装时初始化并由一个目录组成,所有数据都存储在这个目录中。使用 initdb 创建第一个数据库。一台机器上可以启动多个实例。 数据库 数据库是命名的对象集合,

  • Leo Chen
    Leo Chen
16 min read
Mysql

SNS中关注及好友新鲜事的一种实现方案(PHP+Mysql)

某个网站系统需要用到SNS的关注以及好友新鲜事的功能,摸索了半天写了个SQL语句来实现,功能上没有问题,不过不确定运行效率怎么样。 首先是关注功能,这个简单,只要新建一个follow表就行,代码如下: CREATE TABLE follow ( id int(11) NOT NULL auto_increment, fid int(11) NOT NULL COMMENT '被关注', uid int(11) NOT NULL COMMENT '关注者', PRIMARY

  • Leo Chen
    Leo Chen
2 min read
Mysql

PHP开发者常犯的10个MySQL错误

数据库是Web大多数应用开发的基础。如果你是用PHP,那么大多数据库用的是MYSQL也是LAMP架构的重要部分。 PHP看起来很简单,一个初学者也可以几个小时内就能开始写函数了。但是建立一个稳定、可靠的数据库确需要时间和经验。下面就是一些这样的经验,不仅仅是MYSQL,其他数据库也一样可以参考。 1.使用MyISAM而不是InnoDB MySQL有很多的数据库引擎,单一般也就用MyISAM和InnoDB。 MyISAM 是默认使用的。但是除非你是建立一个非常简单的数据库或者只是实验性的,那么到大多数时候这个选择是错误的。MyISAM不支持外键的约束,这是保证数据完整性的精华所在啊。另外,MyISAM会在添加或者更新数据的时候将整个表锁住,这在以后的扩展性能上会有很大的问题。 解决办法很简单:使用InnoDB。 2.使用PHP的mysql方法 PHP从一开始就提供了MySQL的函数库。很多程序都依赖于mysql_connect、mysql_query、mysql_

  • Leo Chen
    Leo Chen
5 min read