$xjj  —>  小丶鸡丷鸡

Tag: Mysql

Mysql中DATE_FORMAT函数用法详解

@2010,06.22 22:02:04

date_format( concat(a,’-',b,’-',c), ‘%Y-%m-%d’)

mysql中DATE_FORMAT(date, format)函数可根据format字符串格式化日期或日期和时间值date,返回结果串。
也可用DATE_FORMAT( ) 来格式化DATE 或DATETIME 值,以便得到所希望的格式。根据format字符串格式化date值:
下面是函数的参数说明:
%S, %s 两位数字形式的秒( 00,01, . . ., 59)
%i 两位数字形式的分( 00,01, . . ., 59)
%H 两位数字形式的小时,24 小时(00,01, . . ., 23)
%h, %I 两位数字形式的小时,12 小时(01,02, . . ., 12)
%k 数字形式的小时,24 小时(0,1, . . ., 23)
%l 数字形式的小时,12 小时(1, 2, . . ., 12)
%T 24 小时的时间形式(hh : mm : s s)
%r 12 小时的时间形式(hh:mm:ss AM 或hh:mm:ss PM)
%p AM 或P M
%W 一周中每一天的名称( Sunday, Monday, . . ., Saturday)
%a 一周中每一天名称的缩写( Sun, Mon, . . ., Sat)
%d 两位数字表示月中的天数( 00, 01, . . ., 31)
%e 数字形式表示月中的天数( 1, 2, . . ., 31)
%D 英文后缀表示月中的天数( 1st, 2nd, 3rd, . . .)
%w 以数字形式表示周中的天数( 0 = Sunday, 1=Monday, . . ., 6=Saturday)
%j 以三位数字表示年中的天数( 001, 002, . . ., 366)
% U 周(0, 1, 52),其中Sunday 为周中的第一天
%u 周(0, 1, 52),其中Monday 为周中的第一天
%M 月名(January, February, . . ., December)
%b 缩写的月名( January, February, . . ., December)
%m 两位数字表示的月份( 01, 02, . . ., 12)
%c 数字表示的月份( 1, 2, . . ., 12)
%Y 四位数字表示的年份
%y 两位数字表示的年份
%% 直接值“%”
示例:
select date_format(日期字段,’%Y-%m-%d’) as ‘日期’ from test
mysql> SELECT DATE_FORMAT(‘1997-10-04 22:23:00′, ‘%W %M %Y’);
-> ‘Saturday October 1997′
mysql> SELECT DATE_FORMAT(‘1997-10-04 22:23:00′, ‘%H:%i:%s’);
-> ‘22:23:00′
mysql> SELECT DATE_FORMAT(‘1997-10-04 22:23:00′,
‘%D %y %a %d %m %b %j’);
-> ‘4th 97 Sat 04 10 Oct 277′
mysql> SELECT DATE_FORMAT(‘1997-10-04 22:23:00′,
‘%H %k %I %r %T %S %w’);
-> ‘22 22 10 10:23:00 PM 22:23:00 00 6′
mysql> SELECT DATE_FORMAT(‘1999-01-01′, ‘%X %V’);
-> ‘1998 52′

留言 : 更多...

PHP中Mysql函数总汇

@2010,06.22 16:58:42

1、mysql_connect()-建立数据库连接
格式:
resource mysql_connect([string hostname [:port] [:/path/to/socket] [, string username] [, string password]])
例:
$conn = @mysql_connect(“localhost”, “username”, “password”) or die(“不能连接到Mysql Server”);
说明:使用该连接必须显示的关闭连接

2、mysql_pconnect()-建立数据库连接
格式:
resource mysql_pconnect([string hostname [:port] [:/path/to/socket] [, string username] [, string password]])
例:
$conn = @mysql_pconnect(“localhost”, “username”, “password”) or dir(“不能连接到Mysql Server”);
说明:使用该连接函数不需要显示的关闭连接,它相当于使用了连接池

3、mysql_close()-关闭数据库连接
例:
$conn = @mysql_connect(“localhost”, “username”, “password”) or die(“不能连接到Mysql Server”);
@mysql_select_db(“MyDatabase”) or die(“不能选择这个数据库,或数据库不存在”);
echo “你已经连接到MyDatabase数据库”;
mysql_close();

4、mysql_select_db()-选择数据库
格式:
boolean mysql_select_db(string db_name [, resource link_id])
例:
$conn = @mysql_connect(“localhost”, “username”, “password”) or die(“不能连接到Mysql Server”);
@mysql_select_db(“MyDatabase”) or die(“不能选择这个数据库,或数据库不存在”);

5、mysql_query()-查询MySQL
格式:
resource mysql_query (string query, [resource link_id])
例:
$linkId = @mysql_connect(“localhost”, “username”, “password”) or die(“不能连接到Mysql Server”);
@mysql_select_db(“MyDatabase”) or die(“不能选择这个数据库,或者数据库不存在”);
$query = “select * from MyTable”;
$result = mysql_query($query);
mysql_close();
说明:若SQL查询执行成功,则返回资源标识符,失败时返回FALSE。若执行更新成功,则返回TRUE,否则返回FALSE

6、mysql_db_query()-查询MySQL
格式:
resource mysql_db_query(string database, string query [, resource link_id])
例:
$linkId = @mysql_connect(“localhost”, “username”, “password”) or die(“不能连接到MysqlServer”);
$query = “select * from MyTable”;
$result = mysql_db_query(“MyDatabase”, $query);
mysql_close();
说明:为了使代码清晰,不推荐使用这个函数调用

7、mysql_result()-获取和显示数据
格式:
mixed mysql_result (resource result_set, int row [, mixed field])
例:
$query = “select id, name from MyTable order by name”;
$result = mysql_query($query);
for($count=0;$count<=mysql_numrows($result);$count++)
{
$c_id = mysql_result($result, 0, "id");
$c_name = mysql_result($result, 0, "name");
echo $c_id,$c_name;
}
说明:最简单、也是效率最低的数据获取函数

8、mysql_fetch_row()-获取和显示数据
格式:
array mysql_fetch_row (resource result_set)
例:
$query = "select id, name from MyTable order by name";
$result = mysql_query($query);
while (list($id, $name) = mysql_fetch_row($result)) {
echo("Name: $name ($id)
“);
}
说明:函数从result_set中获取整个数据行,将值放在一个索引数组中。通常会结使list()函数使用

9、mysql_fetch_array()-获取和显示数据
格式:
array mysql_fetch_array (resource result_set [, int result_type])
例:
$query = “select id, name from MyTable order by name”;
$result = mysql_query($query);
while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$id = $row["id"];
$name = $row["name"];
echo “Name: $name ($id)
“;
}
又例:
$query = “select id, name from MyTable order by name”;
$result = mysql_query($query);
while($row = mysql_fetch_array($result, MYSQL_NUM)) {
$id = $row[0];
$name = $row[1];
echo “Name: $name ($id)
“;
}
说明:
result_type的值有:
MYSQL_ASSOC: 字段名表示键,字段内容为值
MYSQL_NUM: 数值索引数组,操作与mysql_fetch_ros()函数一样
MYSQL_BOTH: 即作为关联数组又作为数值索引数组返回。result_type的默认值。

10、mysql_fetch_assoc()-获取和显示数据
格式:
array mysql_fetch_assoc (resource result_set)
相当于调用 mysql_fetch_array(resource, MYSQL_ASSOC);

11、mysql_fetch_object()-获取和显示数据
格式:
object mysql_fetch_object(resource result_set)
例:
$query = “select id, name from MyTable order by name”;
while ($row = mysql_fetch_object($result)) {
$id = $row->id;
$name = $row->name;
echo “Name: $name ($id)
“;
}
说明:返回一个对象,在操作上与mysql_fetch_array()相同

12、mysql_num_rows()-所选择的记录的个数
格式:
int mysql_num_rows(resource result_set)
例:
query = “select id, name from MyTable where id > 65″;
$result = mysql_query($query);
echo “有”.mysql_num_rows($result).”条记录的ID大于65″;
说明:只在确定select查询所获取的记录数时才有用。

13、mysql_affected_rows()-受Insert,update,delete影响的记录的个数
格式:
int mysql_affected_rows([resource link_id])
例:
$query = “update MyTable set name=’CheneyFu’ where id>=5″;
$result = mysql_query($query);
echo “ID大于等于5的名称被更新了的记录数:”.mysql_affected_rows();
说明:该函数获取受INSERT,UPDATE或DELETE更新语句影响的行数

14、mysql_list_dbs()-获取数据库列表信息
格式:
resource mysql_list_dbs([resource link_id])
例:
mysql_connect(“localhost”, “username”, “password”);
$dbs = mysql_list_dbs();
echo “Databases:
“;
while (list($db) = mysql_fetch_rows($dbs)) {
echo “$db
“;
}
说明:显示所有数据库名称

15、mysql_db_name()-获取数据库名
格式:
string mysql_db_name(resource result_set, integer index)
说明:该函数获取在mysql_list_dbs()所返回result_set中位于指定index索引的数据库名

16、mysql_list_tables()-获取数据库表列表
格式:
resource mysql_list_tables(string database [, resource link_id])
例:
mysql_connect(“localhost”, “username”, “password”);
$tables = mysql_list_tables(“MyDatabase”);
while (list($table) = mysql_fetch_row($tables)) {
echo “$table
“;
}
说明:该函数获取database中所有表的表名

17、mysql_tablename()-获取某个数据库表名
格式:
string mysql_tablename(resource result_set, integer index)
例:
mysql_connect(“localhost”, “username”, “password”);
$tables = mysql_list_tables(“MyDatabase”);
$count = -1;
while (++$count < mysql_numrows($tables)) {
echo mysql_tablename($tables, $count)."
“;
}
说明:该函数获取mysql_list_tables()所返回result_set中位于指定index索引的表名

18、mysql_fetch_field()-获取字段信息
格式:
object mysql_fetch_field(resource result [, int field_offset])
例:
mysql_connect(“localhost”, “username”, “password”);
mysql_select_db(“MyDatabase”);
$query = “select * from MyTable”;
$result = mysql_query($query);
$counts = mysql_num_fields($result);
for($count = 0; $count < $counts; $count++) {
$field = mysql_fetch_field($result, $count);
echo "

$field->name $field->type ($field->max_length)

“;
}
说明:
返回的对象共有12个对象属性:
name: 字段名
table: 字段所在的表
max_length:字段的最大长度
not_null: 如果字段不能为null,则为1,否则0
primary_key: 如果字段为主键,则为1,否则0
unique_key: 如果字段是唯一键,则为1, 否则0
multiple_key: 如果字段为非唯一,则为1,否则0
numeric: 如果字段为数值则为1,否则0
blob: 如果字段为BLOB则为1,否则为0
type: 字段的数据类型
unsigned: 如果字段为无符号数则为1,否则为0
zerofill: 如果字段为“零填充”则为1, 否则为0

19、mysql_num_fields()-获取查询的字段个数
格式:
integer mysql_num_fields(resource result_set)
例:
$query = “select id,name from MyTable order by name”;
$result = mysql_query($query);
echo “这个查询的字段数是:”.mysql_num_fields($result).”
“;

20、mysql_list_fields()-获取指定表的所有字段的字段名
格式:
resource mysql_list_fields (string database_name, string table_name [, resource link_id])
例:
$fields =mysql_list_fields(“MyDatabase”, “MyTable”);
echo “数据库MyDatabase中表MyTable的字段数: “.mysql_num_fields($fields).”
“;

21、mysql_field_flags()-获取指定的字段选项
格式:
string mysql_field_flags (resource result_set, integer field_offset)
例:
$query = “select id, name from MyTable order by name”;
$result = mysql_query($query);
$row=mysql_fetch_wor($row);

22、mysql_field_len()-获取指定的字段的最大长度
格式:
integer mysql_field_len (resource result_set, integer field_offset)
例:
$query = “select name from MyTable”;
$result = mysql_query($query);
$row = mysql_fetch_row($result);
echo mysql_field_len($result, 0).”
“;
说明:
如果mysql_field_len($reseult, 0) = 16777215
那么numer_format(mysql_field_len($result))等于16,777,215

23、mysql_field_name()-获取字段名
格式:
string mysql_field_name (resource result_set, int field_offset)
例:
$query = “select id as PKID, name from MyTable order by name”;
$result = mysql_query($query);
$row = mysql_fetch_row($result);
echo mysql_field_name($result, 0); // Result: PKID

24、mysql_field_type()-获取字段类型
格式:
string mysql_field_type (resource result_set, int field_offset)
例:
$query = “select id, name from MyTable order by name”;
$result = mysql_query($query);
$row = mysql_fetch_row($result);
echo mysql_field_type($result, 0); // Result: int

25、mysql_field_table()-获取字段所在表名
格式:
string mysql_field_table (resource result_set, int field_offset)
例:
$query = “select id as PKID, name from MyTable order by name”;
$result = mysql_query($query);
$row = mysql_fetch_row($result);
echo mysql_field_table($result, 0); // Result: MyTable

**********

Mysql数据库同步

@2010,05.19 17:58:23

Linux环境
配置
假设有两个数据库服务器192.168.0.1和192.168.0.2,后面用1表示168.0.1,2表示168.0.2
首先配置1
用root进入mysql添加一个授权2可以访问的用户
代码:
mysql>GRANT all privileges ON *.* TO tongbu@’192.168.0.2′ IDENTIFIED BY ‘123456′;

退出mysql编辑mysql配置文件
代码:
vi /etc/my.cnf

添加或修改以下内容:
代码:

[client]
default-character-set=utf8
[mysqld]
default-character-set=utf8
log-bin=mysql-bin
server-id=1
master-host=192.168.0.2
master-user=tongbu
master-password=123456
master-port=3306
master-connect-retry=30 #断网后间隔30秒重连
binlog-do-db=mysql #要备份的库
replicate-do-db=mysql
skip-name-resolve #快速登录跳过用户解析
back_log = 500
max_connect_errors = 100
max_connections=1000

重启mysql服务
代码:
service mysqld restart

至此1配置完毕,然后配置2,步骤同1
代码:
mysql>GRANT all privileges ON *.* TO tongbu@’192.168.0.1′ IDENTIFIED BY ‘123456′;

代码:
vi /etc/my.cnf

代码:

[client]
default-character-set=utf8
[mysqld]
default-character-set=utf8
server-id=2
master-host=192.168.0.1
master-user=tongbu
master-password=123456
master-port=3306
binlog-do-db=mysql
replicate-do-db=mysql
skip-name-resolve
back_log = 500
max_connections = 1000
max_connect_errors = 100
slave_skip_error=1062
sync_binlog=1 #每作一次操作同步一次
log-bin=mysql-bin

代码:
service mysqld restart

至此2也配置完毕
注意:2里面的配置有些不同是因为我把1做为生产库,2只做备份

最后进入1的mysql查看master状态
代码:
mysql>show master status;

显示如下:
代码:

+——————+———-+————–+——————+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+——————+———-+————–+——————+
| mysql-bin.000019 | 11809679 | mysql | |
+——————+———-+————–+——————+
1 row in set (0.00 sec)

我们把file=mysql-bin.000019和position=11809679 记下来
然后进入2的mysql
代码:
mysql>stop slave;

代码:
mysql>change master to master_log_file=’mysql-bin.000019′,master_log_pos=11809679

代码:
mysql>slave start;

查看同步备份状态
代码:
mysql>show slave status\G

其中的
代码:

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

都是Yes则已经处于正常同步状态了

******************************
Windows 环境

目的:
有两台MySQL数据库服 务器A和B,使A为主服务器,B为从服务器,初始状态时,A和B中的数据信息相同,当A中的数据发生变化时,B也跟着发生相应的变化,使得A和B的数据信 息同步,达到备份的目的。

原理:
负责在主、从服务器传输各种修改动作的媒介是主服务器的二进制变更日志,这个日志记载着需要传输给从服务器的各种修改动作。因此,主服务器必须激活二进制 日志功能。从服务器必须具备足以让它连接主服务器并请求主服务器把二进制变更日志传输给它的权限。

环境:
A、B的MySQL数据库版本同为5.0.18
A:
操作系统:Windows 2003
IP地址:10.100.0.100
B:
操作系统:Windows 2000 server
的IP地址:10.100.0.200

配置过程:
1、在A的数据库中建立一个备份帐户,命令如下:
GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.*
TO backup@’10.100.0.200’
IDENTIFIED BY ‘1234’;

建立一个帐 户backup,并且只能允许从10.100.0.200这个地址上来登陆,密码是1234。

2、因为 mysql版本新密码算法不同,所以进入mysql下,输入:set password for’backup’@'10.100.0.200′=old_password(‘1234′);

3、关停A服务器,将A中的数据拷贝到B服务器中,使得A和B中的数据同步,并且确保在全部设置操作结束前,禁止在A和B服务器中进行写操作,使得两数据 库中的数据一定要相同!

4、对A服 务器的配置进行修改,打开mysql/my.ini文件,在[mysqld]下面添加如下内容:
server-id=1
log-bin=c:\log-bin.log

server- id:为主服务器A的ID值
log-bin:二进制变更日值

4、重启A 服务器,从现在起,它将把客户堆有关数据库的修改记载到二进制变更日志里去。

5、关停B 服务器,对B服务器锦熙配置,以便让它知道自己的镜像ID、到哪里去找主服务器以及如何去连接服务器。最简单的情况是主、从服务器分别运行在不同的主机上 并都使用着默认的TCP/IP端口,只要在从服务器启动时去读取的mysql/my.ini文件里添加以下几行指令就行了。
[mysqld]
server-id=2
master-host=10.100.0.100
master-user=backup
master-password=1234
//以下内容为可选
replicate-do-db=backup

server- id:从服务器B的ID值。注意不能和主服务器的ID值相同。
master-host:主服务器的IP地址。
master-user:从服务器连接主服务器的帐号。
master-password:从服务器连接主服务器的帐号密码。
replicate-do-db:告诉主服务器只对指定的数据库进行同步镜像。

6、重启从 服务器B。至此所有设置全部完成。更新A中的数据,B中也会立刻进行同步更新。如果从服务器没有进行同步更新,你可以通过查看从服务器中的 mysql_error.log日志文件进行排错。

8、查看日志一些命令
1, show master status\G;
在这里主要是看log-bin的文件是否相同。
show slave status\G;
在这里主要是看:
Slave_IO_Running=Yes
Slave_SQL_Running=Yes
如果都是Yes,则说明配置成功.

2,在 master上输入show processlist\G;
mysql> SHOW PROCESSLIST\G
*************************** 1. row ***************************
Id: 2
User: root
Host: localhost:32931
db: NULL
Command: Binlog Dump
Time: 94
State: Has sent all binlog to slave; waiting for binlog to
be updated
Info: NULL

如果出现Command: Binlog Dump,则说明配置成功.

问题 描述:主从复制在某个时刻,从服务器同步失败,并给出报错消息。

消息内容:基本意思是缺少某个库的某个表

原因:主从服务长时间不同步,主库已经生成很多新的表或者库,而从库却没有。

操作过程:
(1)登陆主服务器,查看主服务器的状态
mysql>show master status;
(2)登陆从服务器,执行同步操作。[code]
mysql>stop slave;mysql > change master to ...(此处省略);mysql > start slave;
(3)从服务器上查看状态[code]
mysql > show slave status\G看报错信息少什么表或库,少什么就直接从主服务器通过scp复制,然后重复过程(1)~(3)直到不报错为止。

留言 : 更多...

ubuntu server — 05 配置通达OA

@2010,05.18 22:27:15

以前有转载过通达OA配置在Linux服务器,昨天自己实践下,
1、首先数据库要手工改成大些文件名,这个工作量最大,在FTP传到mysql目录下;
2、把在Windows下安装好MYOA用FTP(注意选二进制)上传到web目录下,配置好多域名;
3、修正好php.ini的参数 http://blog.putian.name/?p=438;(这步做好OA可以登录,菜单也正常,就是桌面出不来
4、桌面问题是因为字符集的关系,自己摸索了半天发现字符集问题只能改英文文件名,今天再看下按转载的文章有说的改成英文文件名即可,杯具…;

留言 :, , 更多...


 Mysql « $xjj —> 小丶鸡丷鸡