- 浏览: 354449 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (238)
- j2ee (22)
- mysql (14)
- hibernate (2)
- struts (3)
- spring (7)
- php (28)
- cakephp (12)
- pattern (0)
- 数据结构 (0)
- python (17)
- redis (1)
- sql (2)
- ibatis (1)
- jquery (3)
- 测试 (3)
- linux (37)
- solr (3)
- oracle (5)
- jira (5)
- 版本控制 (3)
- xp (1)
- IDE (3)
- apache (4)
- hadoop (2)
- freemarker (2)
- maven (5)
- 项目管理 (2)
- UML (1)
- Django (6)
- 正则 (1)
- Scrapy (1)
- 文档管理 (3)
- 项目集成 (8)
- MQ (3)
- 架构 (1)
- HTML (1)
- IT (1)
- 云 (0)
- 应用服务器 (4)
- win 7 (1)
- thrift (1)
- 学习 (3)
- OpenStack (3)
- sqlserver (1)
- javascript (1)
- zabbix (3)
- IOS (1)
- rabbitmq (1)
- springcloud (2)
最新评论
-
xushenkun4:
至今仍然有这个bug,0.9.1无法传输中文utf8。
thrift使用出现诡异问题 -
feiniao2029:
[i][/i][u][/u]引用
spring 配置init方法 -
wt811004:
非常感谢朋友慷慨指导
dotproject项目管理工具使用 -
hackpro:
这将是一个经典,就像大话西游...
javaeye怀旧 -
raymond2006k:
个人更偏好 Velocity。我觉得还有个对比点,就是编程方式 ...
jsp freemarker velocity 比较
1. 字符集
show variables like '%char%';
2. Cannot convert value '0000-00-00 00:00:00' 错误解决方案
MySQL数据库,如果数据库中Datetime字段为空为值为'0000-00-00 00:00:00', Hibernate就会报如下错误
“Cannot convert value '0000-00-00 00:00:00' from column 3 to TIMESTAMP。”
解决方案:为在数据库连接后面加上
"jdbc:mysql://127.0.0.1:3306/ht?useUnicode=true
&characterEncoding=UTF-8
&autoReconnect=true&failOverReadOnly=false
&maxReconnects=10000&initialTimeout=2
&connectTimeout=0&socketTimeout=0
&zeroDateTimeBehavior=convertToNull
&transformedBitIsBoolean=true"即可
3. 创建视图
CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}] VIEW view_name [(column_list)] AS select_statement [WITH [CASCADED | LOCAL] CHECK OPTION]
4. describe table; == explain table;
查看表结构
5. show databases;
显示数据库
6. show tables;
显示表
7. 查询某一个命令的格式:
eg: help 'create database';
help contents; 展示可帮助的内容
8. 查询当前使用数据库
SELECT DATABASE();
9.
CREATE USER 'monty'@'localhost' IDENTIFIED BY 'some_pass';
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
-> ON bankaccount.*
-> TO 'custom'@'localhost';
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON sic.* TO 'sic'@'localhost'
10. mysql 导入sql
* 打开CMD输入以下命令(不需要转换目录)
>mysql -u root -p123
进入MYSQL后
mysql>use test;
mysql> source c:/test.sql
ok执行完了,你可以用show tables;查看有哪写表(记得语句后有个分号)
还可以用desc tableName;查看你的表结构
* 打开CMD输入以下命令(进入mysql的bin目录)
d:\mysql\bin>mysql -u root -p123 test < c:/test.sql
11. 导出要用到MySQL的mysqldump工具,
基本用法:
shell> mysqldump [OPTIONS] database [tables]
如果你不给定任何表,整个数据库将被导出。
通过执行mysqldump --help,你能得到你mysqldump的版本支持的选项表。
注意,如果你运行mysqldump没有--quick或--opt选项,mysqldump将在导出结果前装载整个结果集到内存中,如果你正在导出一个大的数据库,这将可能是一个问题。
mysqldump支持下列选项:
--add-locks
在每个表导出之前增加LOCK TABLES并且之后UNLOCK TABLE。(为了使得更快地插入到MySQL)。
--add-drop-table
在每个create语句之前增加一个drop table。
--allow-keywords
允许创建是关键词的列名字。这由表名前缀于每个列名做到。
-c, --complete-insert
使用完整的insert语句(用列名字)。
-C, --compress
如果客户和服务器均支持压缩,压缩两者间所有的信息。
--delayed
用INSERT DELAYED命令插入行。
-e, --extended-insert
使用全新多行INSERT语法。(给出更紧缩并且更快的插入语句)
-#, --debug[=option_string]
跟踪程序的使用(为了调试)。
--help
显示一条帮助消息并且退出。
--fields-terminated-by=...
--fields-enclosed-by=...
--fields-optionally-enclosed-by=...
--fields-escaped-by=...
--fields-terminated-by=...
这些选择与-T选择一起使用,并且有相应的LOAD DATA INFILE子句相同的含义。
LOAD DATA INFILE语法。
-F, --flush-logs
在开始导出前,洗掉在MySQL服务器中的日志文件。
-f, --force,
即使我们在一个表导出期间得到一个SQL错误,继续。
-h, --host=..
从命名的主机上的MySQL服务器导出数据。缺省主机是localhost。
-l, --lock-tables.
为开始导出锁定所有表。
-t, --no-create-info
不写入表创建信息(CREATE TABLE语句)
-d, --no-data
不写入表的任何行信息。如果你只想得到一个表的结构的导出,这是很有用的!
--opt
同--quick --add-drop-table --add-locks --extended-insert --lock-tables。
应该给你为读入一个MySQL服务器的尽可能最快的导出。
-pyour_pass, --password[=your_pass]
与服务器连接时使用的口令。如果你不指定“=your_pass”部分,mysqldump需要来自终端的口令。
-P port_num, --port=port_num
与一台主机连接时使用的TCP/IP端口号。(这用于连接到localhost以外的主机,因为它使用 Unix套接字。)
-q, --quick
不缓冲查询,直接导出至stdout;使用mysql_use_result()做它。
-S /path/to/socket, --socket=/path/to/socket
与localhost连接时(它是缺省主机)使用的套接字文件。
-T, --tab=path-to-some-directory
对于每个给定的表,创建一个table_name.sql文件,它包含SQL CREATE 命令,和一个table_name.txt文件,它包含数据。 注意:这只有在mysqldump运行在mysqld守护进程运行的同一台机器上的时候才工作。.txt文件的格式根据--fields-xxx和 --lines--xxx选项来定。
-u user_name, --user=user_name
与服务器连接时,MySQL使用的用户名。缺省值是你的Unix登录名。
-O var=option, --set-variable var=option设置一个变量的值。可能的变量被列在下面。
-v, --verbose
冗长模式。打印出程序所做的更多的信息。
-V, --version
打印版本信息并且退出。
-w, --where='where-condition'
只导出被选择了的记录;注意引号是强制的!
"--where=user='jimf'" "-wuserid>1" "-wuserid<1"
最常见的mysqldump使用可能制作整个数据库的一个备份:
mysqldump --opt database > backup-file.sql
但是它对用来自于一个数据库的信息充实另外一个MySQL数据库也是有用的:
mysqldump --opt database | mysql --host=remote-host -C database
由于mysqldump导出的是完整的SQL语句,所以用mysql客户程序很容易就能把数据导入了:
shell> mysqladmin create target_db_name
shell> mysql target_db_name < backup-file.sql
就是
shell> mysql 库名 < 文件名
12. 查看连接数,状态 收藏
命令: show processlist;
如果是root帐号,你能看到所有用户的当前连接。如果是其它普通帐号,只能看到自己占用的连接。
show processlist;只列出前100条,如果想全列出请使用show full processlist;
mysql> show processlist;
命令: show status;
命令:show status like '%下面变量%';
Aborted_clients 由于客户没有正确关闭连接已经死掉,已经放弃的连接数量。
Aborted_connects 尝试已经失败的MySQL服务器的连接的次数。
Connections 试图连接MySQL服务器的次数。
Created_tmp_tables 当执行语句时,已经被创造了的隐含临时表的数量。
Delayed_insert_threads 正在使用的延迟插入处理器线程的数量。
Delayed_writes 用INSERT DELAYED写入的行数。
Delayed_errors 用INSERT DELAYED写入的发生某些错误(可能重复键值)的行数。
Flush_commands 执行FLUSH命令的次数。
Handler_delete 请求从一张表中删除行的次数。
Handler_read_first 请求读入表中第一行的次数。
Handler_read_key 请求数字基于键读行。
Handler_read_next 请求读入基于一个键的一行的次数。
Handler_read_rnd 请求读入基于一个固定位置的一行的次数。
Handler_update 请求更新表中一行的次数。
Handler_write 请求向表中插入一行的次数。
Key_blocks_used 用于关键字缓存的块的数量。
Key_read_requests 请求从缓存读入一个键值的次数。
Key_reads 从磁盘物理读入一个键值的次数。
Key_write_requests 请求将一个关键字块写入缓存次数。
Key_writes 将一个键值块物理写入磁盘的次数。
Max_used_connections 同时使用的连接的最大数目。
Not_flushed_key_blocks 在键缓存中已经改变但是还没被清空到磁盘上的键块。
Not_flushed_delayed_rows 在INSERT DELAY队列中等待写入的行的数量。
Open_tables 打开表的数量。
Open_files 打开文件的数量。
Open_streams 打开流的数量(主要用于日志记载)
Opened_tables 已经打开的表的数量。
Questions 发往服务器的查询的数量。
Slow_queries 要花超过long_query_time时间的查询数量。
Threads_connected 当前打开的连接的数量。
Threads_running 不在睡眠的线程数量。
Uptime 服务器工作了多少秒。
My.ini配置 虚拟内存
innodb_buffer_pool_size=576M ->128M InnoDB引擎缓冲区
query_cache_size=100M ->32 查询缓存
tmp_table_size=102M ->32M 临时表大小
key_buffer_size=16m ->8M
设置max_connections
命令:show variables like '%max_connections%'
(这个办法在debian+mysql Ver 12.22 Distrib 4.0.22, for pc-linux (i386)
里实验了)
设置办法是在my.cnf文件中,添加下面的最后红色的一行:
--------------------------------------------------------------------------------
[mysqld]
port=3306
#socket=MySQL
skip-locking
set-variable = key_buffer=16K
set-variable = max_allowed_packet=1M
set-variable = thread_stack=64K
set-variable = table_cache=4
set-variable = sort_buffer=64K
set-variable = net_buffer_length=2K
set-variable = max_connections=32000
(在院里的DELL机器mysql4.0里的语法不同
max_connecionts=2000
直接这么写就好了
)
--------------------------------------------------------------------------------
修改完毕后,重启MySQL即可。当然,为了确保设置正确,应该查看一下max_connections。
注意:
1、虽然这里写的32000。但实际MySQL服务器允许的最大连接数16384;
2、除max_connections外,上述其他配置应该根据你们系统自身需要进行配置,不必拘泥;
3、添加了最大允许连接数,对系统消耗增加不大。
4、如果你的mysql用的是my.ini作配置文件,设置类似,但设置的格式要稍作变通。
用mysqld --help 可以查看到max_connections 变量。
或者 mysql -uuser -p
后mysql>show variables;
也会看到max_connections 。
下面是修改张老师 的redhat9的方法:
先是mysql -uw01f -p
mysql>show variables;
看到max_connections 为100
mysql>exit;
vi /etc/my.cnf
[mysqld]
set-variable=max_connections=250 #加入这些内容
:wq
/etc/init.d/mysqld restart
好了,行了。
下面的是抄的,我用不了
mysql的最大连接数默认是100, 这个数值对于并发连接很多的数据库应用是远远不够的,当连接请求大于默认连接数后,就会出现无法连接数据库的错误,因此我们需要把它适当调大一些, 有两种办法可以修改最大连接数,一种是修改safe_mysqld,另一种是直接修改原代码并重新编译。下面我们就分别介绍这两种方法:
1.修改safe_mysqld
找到safe_mysqld编辑它,找到mysqld启动的那两行,在后面加上参数 :
-O max_connections=1000
例如 :(其中前面有---的是原来的内容,而+++是修改过以后的)
--- safe_mysqld.orig Mon Sep 25 09:34:01 2000
+++ safe_mysqld Sun Sep 24 16:56:46 2000
@@ -109,10 +109,10 @@
if test "$#" -eq 0
then
nohup $ledir/mysqld --basedir=$MY_BASEDIR_VERSION --datadir=$DATADIR \
- --skip-locking >> $err_log 2>&1
+ --skip-locking -O max_connections=1000 >> $err_log 2>&1
else
nohup $ledir/mysqld --basedir=$MY_BASEDIR_VERSION --datadir=$DATADIR \
- --skip-locking "$@" >> $err_log 2>&1
+ --skip-locking "$@" -O max_connections=1000 >> $err_log 2>&1
fi
if test ! -f $pid_file # This is removed if normal shutdown
then
然后关闭mysql重启它,用
/mysqladmin所在路径/mysqladmin -uroot -p variables
输入root数据库账号的密码后可看到
| max_connections | 1000 |
即新改动已经生效。
2.修改原代码
解开MySQL的原代码,进入里面的sql目录修改mysqld.cc找到下面一行:
{ "max_connections", (long*) &max_connections,1000,1,16384,0,1},
把它改为:
{ "max_connections", (long*) &max_connections,1000,1,16384,0,1},
存盘退出,然后./configure ;make;make install可以获得同样的效果。
13. 删除链接数
show full processlist;
...
kill id;
参考:http://techgurulive.com/2009/08/21/how-to-kill-mysql-client-processes-in-mysql/
14. 如何使mysql查询时区分大小写
CREATE TABLE T(
A VARCHAR(10)
);
对这个表,缺省情况下,下面两个查询的结果是一样的:
SELECT * FROM TABLE_NAME WHERE A='ABC';
SELECT * FROM TABLE_NAME WHERE A='Abc';
mysql不区分大小写,要使mysql在查询时区分大小写解决方法是:
在比较时加上 Binary 开关
SELECT * FROM TABLE_NAME WHERE BINARY A='ABC';
SELECT * FROM TABLE_NAME WHERE BINARY A='Abc';
或者在建表时候使用BINARY标示。
如下:
CREATE TABLE T(
A VARCHAR(10) BINARY
);
也可以在EMS中,表的属性页中勾选Birnary,为字段加上 Binary 属性
show variables like '%char%';
2. Cannot convert value '0000-00-00 00:00:00' 错误解决方案
MySQL数据库,如果数据库中Datetime字段为空为值为'0000-00-00 00:00:00', Hibernate就会报如下错误
“Cannot convert value '0000-00-00 00:00:00' from column 3 to TIMESTAMP。”
解决方案:为在数据库连接后面加上
"jdbc:mysql://127.0.0.1:3306/ht?useUnicode=true
&characterEncoding=UTF-8
&autoReconnect=true&failOverReadOnly=false
&maxReconnects=10000&initialTimeout=2
&connectTimeout=0&socketTimeout=0
&zeroDateTimeBehavior=convertToNull
&transformedBitIsBoolean=true"即可
3. 创建视图
CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}] VIEW view_name [(column_list)] AS select_statement [WITH [CASCADED | LOCAL] CHECK OPTION]
4. describe table; == explain table;
查看表结构
5. show databases;
显示数据库
6. show tables;
显示表
7. 查询某一个命令的格式:
eg: help 'create database';
help contents; 展示可帮助的内容
8. 查询当前使用数据库
SELECT DATABASE();
9.
CREATE USER 'monty'@'localhost' IDENTIFIED BY 'some_pass';
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
-> ON bankaccount.*
-> TO 'custom'@'localhost';
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON sic.* TO 'sic'@'localhost'
10. mysql 导入sql
* 打开CMD输入以下命令(不需要转换目录)
>mysql -u root -p123
进入MYSQL后
mysql>use test;
mysql> source c:/test.sql
ok执行完了,你可以用show tables;查看有哪写表(记得语句后有个分号)
还可以用desc tableName;查看你的表结构
* 打开CMD输入以下命令(进入mysql的bin目录)
d:\mysql\bin>mysql -u root -p123 test < c:/test.sql
11. 导出要用到MySQL的mysqldump工具,
基本用法:
shell> mysqldump [OPTIONS] database [tables]
如果你不给定任何表,整个数据库将被导出。
通过执行mysqldump --help,你能得到你mysqldump的版本支持的选项表。
注意,如果你运行mysqldump没有--quick或--opt选项,mysqldump将在导出结果前装载整个结果集到内存中,如果你正在导出一个大的数据库,这将可能是一个问题。
mysqldump支持下列选项:
--add-locks
在每个表导出之前增加LOCK TABLES并且之后UNLOCK TABLE。(为了使得更快地插入到MySQL)。
--add-drop-table
在每个create语句之前增加一个drop table。
--allow-keywords
允许创建是关键词的列名字。这由表名前缀于每个列名做到。
-c, --complete-insert
使用完整的insert语句(用列名字)。
-C, --compress
如果客户和服务器均支持压缩,压缩两者间所有的信息。
--delayed
用INSERT DELAYED命令插入行。
-e, --extended-insert
使用全新多行INSERT语法。(给出更紧缩并且更快的插入语句)
-#, --debug[=option_string]
跟踪程序的使用(为了调试)。
--help
显示一条帮助消息并且退出。
--fields-terminated-by=...
--fields-enclosed-by=...
--fields-optionally-enclosed-by=...
--fields-escaped-by=...
--fields-terminated-by=...
这些选择与-T选择一起使用,并且有相应的LOAD DATA INFILE子句相同的含义。
LOAD DATA INFILE语法。
-F, --flush-logs
在开始导出前,洗掉在MySQL服务器中的日志文件。
-f, --force,
即使我们在一个表导出期间得到一个SQL错误,继续。
-h, --host=..
从命名的主机上的MySQL服务器导出数据。缺省主机是localhost。
-l, --lock-tables.
为开始导出锁定所有表。
-t, --no-create-info
不写入表创建信息(CREATE TABLE语句)
-d, --no-data
不写入表的任何行信息。如果你只想得到一个表的结构的导出,这是很有用的!
--opt
同--quick --add-drop-table --add-locks --extended-insert --lock-tables。
应该给你为读入一个MySQL服务器的尽可能最快的导出。
-pyour_pass, --password[=your_pass]
与服务器连接时使用的口令。如果你不指定“=your_pass”部分,mysqldump需要来自终端的口令。
-P port_num, --port=port_num
与一台主机连接时使用的TCP/IP端口号。(这用于连接到localhost以外的主机,因为它使用 Unix套接字。)
-q, --quick
不缓冲查询,直接导出至stdout;使用mysql_use_result()做它。
-S /path/to/socket, --socket=/path/to/socket
与localhost连接时(它是缺省主机)使用的套接字文件。
-T, --tab=path-to-some-directory
对于每个给定的表,创建一个table_name.sql文件,它包含SQL CREATE 命令,和一个table_name.txt文件,它包含数据。 注意:这只有在mysqldump运行在mysqld守护进程运行的同一台机器上的时候才工作。.txt文件的格式根据--fields-xxx和 --lines--xxx选项来定。
-u user_name, --user=user_name
与服务器连接时,MySQL使用的用户名。缺省值是你的Unix登录名。
-O var=option, --set-variable var=option设置一个变量的值。可能的变量被列在下面。
-v, --verbose
冗长模式。打印出程序所做的更多的信息。
-V, --version
打印版本信息并且退出。
-w, --where='where-condition'
只导出被选择了的记录;注意引号是强制的!
"--where=user='jimf'" "-wuserid>1" "-wuserid<1"
最常见的mysqldump使用可能制作整个数据库的一个备份:
mysqldump --opt database > backup-file.sql
但是它对用来自于一个数据库的信息充实另外一个MySQL数据库也是有用的:
mysqldump --opt database | mysql --host=remote-host -C database
由于mysqldump导出的是完整的SQL语句,所以用mysql客户程序很容易就能把数据导入了:
shell> mysqladmin create target_db_name
shell> mysql target_db_name < backup-file.sql
就是
shell> mysql 库名 < 文件名
12. 查看连接数,状态 收藏
命令: show processlist;
如果是root帐号,你能看到所有用户的当前连接。如果是其它普通帐号,只能看到自己占用的连接。
show processlist;只列出前100条,如果想全列出请使用show full processlist;
mysql> show processlist;
命令: show status;
命令:show status like '%下面变量%';
Aborted_clients 由于客户没有正确关闭连接已经死掉,已经放弃的连接数量。
Aborted_connects 尝试已经失败的MySQL服务器的连接的次数。
Connections 试图连接MySQL服务器的次数。
Created_tmp_tables 当执行语句时,已经被创造了的隐含临时表的数量。
Delayed_insert_threads 正在使用的延迟插入处理器线程的数量。
Delayed_writes 用INSERT DELAYED写入的行数。
Delayed_errors 用INSERT DELAYED写入的发生某些错误(可能重复键值)的行数。
Flush_commands 执行FLUSH命令的次数。
Handler_delete 请求从一张表中删除行的次数。
Handler_read_first 请求读入表中第一行的次数。
Handler_read_key 请求数字基于键读行。
Handler_read_next 请求读入基于一个键的一行的次数。
Handler_read_rnd 请求读入基于一个固定位置的一行的次数。
Handler_update 请求更新表中一行的次数。
Handler_write 请求向表中插入一行的次数。
Key_blocks_used 用于关键字缓存的块的数量。
Key_read_requests 请求从缓存读入一个键值的次数。
Key_reads 从磁盘物理读入一个键值的次数。
Key_write_requests 请求将一个关键字块写入缓存次数。
Key_writes 将一个键值块物理写入磁盘的次数。
Max_used_connections 同时使用的连接的最大数目。
Not_flushed_key_blocks 在键缓存中已经改变但是还没被清空到磁盘上的键块。
Not_flushed_delayed_rows 在INSERT DELAY队列中等待写入的行的数量。
Open_tables 打开表的数量。
Open_files 打开文件的数量。
Open_streams 打开流的数量(主要用于日志记载)
Opened_tables 已经打开的表的数量。
Questions 发往服务器的查询的数量。
Slow_queries 要花超过long_query_time时间的查询数量。
Threads_connected 当前打开的连接的数量。
Threads_running 不在睡眠的线程数量。
Uptime 服务器工作了多少秒。
My.ini配置 虚拟内存
innodb_buffer_pool_size=576M ->128M InnoDB引擎缓冲区
query_cache_size=100M ->32 查询缓存
tmp_table_size=102M ->32M 临时表大小
key_buffer_size=16m ->8M
设置max_connections
命令:show variables like '%max_connections%'
(这个办法在debian+mysql Ver 12.22 Distrib 4.0.22, for pc-linux (i386)
里实验了)
设置办法是在my.cnf文件中,添加下面的最后红色的一行:
--------------------------------------------------------------------------------
[mysqld]
port=3306
#socket=MySQL
skip-locking
set-variable = key_buffer=16K
set-variable = max_allowed_packet=1M
set-variable = thread_stack=64K
set-variable = table_cache=4
set-variable = sort_buffer=64K
set-variable = net_buffer_length=2K
set-variable = max_connections=32000
(在院里的DELL机器mysql4.0里的语法不同
max_connecionts=2000
直接这么写就好了
)
--------------------------------------------------------------------------------
修改完毕后,重启MySQL即可。当然,为了确保设置正确,应该查看一下max_connections。
注意:
1、虽然这里写的32000。但实际MySQL服务器允许的最大连接数16384;
2、除max_connections外,上述其他配置应该根据你们系统自身需要进行配置,不必拘泥;
3、添加了最大允许连接数,对系统消耗增加不大。
4、如果你的mysql用的是my.ini作配置文件,设置类似,但设置的格式要稍作变通。
用mysqld --help 可以查看到max_connections 变量。
或者 mysql -uuser -p
后mysql>show variables;
也会看到max_connections 。
下面是修改张老师 的redhat9的方法:
先是mysql -uw01f -p
mysql>show variables;
看到max_connections 为100
mysql>exit;
vi /etc/my.cnf
[mysqld]
set-variable=max_connections=250 #加入这些内容
:wq
/etc/init.d/mysqld restart
好了,行了。
下面的是抄的,我用不了
mysql的最大连接数默认是100, 这个数值对于并发连接很多的数据库应用是远远不够的,当连接请求大于默认连接数后,就会出现无法连接数据库的错误,因此我们需要把它适当调大一些, 有两种办法可以修改最大连接数,一种是修改safe_mysqld,另一种是直接修改原代码并重新编译。下面我们就分别介绍这两种方法:
1.修改safe_mysqld
找到safe_mysqld编辑它,找到mysqld启动的那两行,在后面加上参数 :
-O max_connections=1000
例如 :(其中前面有---的是原来的内容,而+++是修改过以后的)
--- safe_mysqld.orig Mon Sep 25 09:34:01 2000
+++ safe_mysqld Sun Sep 24 16:56:46 2000
@@ -109,10 +109,10 @@
if test "$#" -eq 0
then
nohup $ledir/mysqld --basedir=$MY_BASEDIR_VERSION --datadir=$DATADIR \
- --skip-locking >> $err_log 2>&1
+ --skip-locking -O max_connections=1000 >> $err_log 2>&1
else
nohup $ledir/mysqld --basedir=$MY_BASEDIR_VERSION --datadir=$DATADIR \
- --skip-locking "$@" >> $err_log 2>&1
+ --skip-locking "$@" -O max_connections=1000 >> $err_log 2>&1
fi
if test ! -f $pid_file # This is removed if normal shutdown
then
然后关闭mysql重启它,用
/mysqladmin所在路径/mysqladmin -uroot -p variables
输入root数据库账号的密码后可看到
| max_connections | 1000 |
即新改动已经生效。
2.修改原代码
解开MySQL的原代码,进入里面的sql目录修改mysqld.cc找到下面一行:
{ "max_connections", (long*) &max_connections,1000,1,16384,0,1},
把它改为:
{ "max_connections", (long*) &max_connections,1000,1,16384,0,1},
存盘退出,然后./configure ;make;make install可以获得同样的效果。
13. 删除链接数
show full processlist;
...
kill id;
参考:http://techgurulive.com/2009/08/21/how-to-kill-mysql-client-processes-in-mysql/
14. 如何使mysql查询时区分大小写
CREATE TABLE T(
A VARCHAR(10)
);
对这个表,缺省情况下,下面两个查询的结果是一样的:
SELECT * FROM TABLE_NAME WHERE A='ABC';
SELECT * FROM TABLE_NAME WHERE A='Abc';
mysql不区分大小写,要使mysql在查询时区分大小写解决方法是:
在比较时加上 Binary 开关
SELECT * FROM TABLE_NAME WHERE BINARY A='ABC';
SELECT * FROM TABLE_NAME WHERE BINARY A='Abc';
或者在建表时候使用BINARY标示。
如下:
CREATE TABLE T(
A VARCHAR(10) BINARY
);
也可以在EMS中,表的属性页中勾选Birnary,为字段加上 Binary 属性
发表评论
-
MySQL索引的Index method中btree和hash的区别
2013-07-23 17:45 746在MySQL中,大多数索引(如 PRIMARY KEY,U ... -
MySQL Storage Engine 小记
2012-03-22 10:41 831这段时间在看《High P ... -
MySQL表锁情况和文件打开数
2012-03-20 10:41 11001. 缘起 我们所有My ... -
Mysql数据库调优
2012-02-23 09:39 1822第二篇 优化篇 第1章 SQL优化 ... -
Mysql master && slave
2011-12-23 10:10 1370InnoDB和MyISAM ... -
MYSQL中的IFNULL与IF函数
2010-10-28 14:58 8601. IFNULL(expr1,expr2) ... -
MYSQL官方手冊—性能优化 doc文檔
2010-10-28 14:52 733优化是一个复杂的任务,因为最终要求了解整个待优化的系统。尽管可 ... -
mysql5配置主从库
2010-08-25 11:29 900安装mysql请参考以下文章 http://blog.sina ... -
Mysql Explain 详解
2010-08-25 11:09 761Mysql Explain 详解 一.语法 explai ... -
mysql long to date
2010-08-18 13:38 40511.在开放中,有时候为方便将日期时间以long类型(秒钟)存在 ... -
mysql的字符串函数
2010-08-11 16:58 767对于针对字符串位置的操作,第一个位置被标记为1。 ASCII ... -
concat和concat_ws()区别及MySQL的几个实用字符串函数
2010-08-11 13:39 9621、concat()函数 1.1 MySQL的conc ... -
mysql 基础
2010-08-05 17:56 7381.查看字符集 show variables like '%c ...
相关推荐
一、MySQL基础知识 1. 数据库与表:MySQL中的数据库是一个逻辑存储单元,用于组织相关数据。表是数据库中的基本元素,由列和行构成,用来存储具体的数据。 2. 数据类型:MySQL支持多种数据类型,如整数类型...
这份"MYSQL基础知识-学习笔记"涵盖了对MySQL的初步介绍以及基础概念,是初学者入门的理想资源。 首先,我们从MySQL的简介开始。MySQL是由瑞典的MySQL AB公司开发的,后被甲骨文公司收购。它是一款开源、免费的...
以上是对MySQL基础知识的总结,涵盖了数据库管理系统的各个方面,从基础的数据类型到复杂的查询语句和事务处理,再到数据库的日常管理和性能优化。掌握这些知识对于在IT行业中进行数据库开发和管理是必不可少的。
本文将深入探讨MySQL的基础知识,包括安装、数据类型、表的创建、查询语句、索引以及事务处理等核心概念。 1. **安装与配置** MySQL的安装过程通常包括下载适合操作系统的安装包,按照向导进行安装,然后配置...
mysql参考手册重点章节:5 6 7 8 10 11 13 14 15 ## mysql启动方法: ## mysql关闭方法: ## mysql登陆方法:(单、多实例,本地、远程登录) ## 修改mysql提示符 ## 修改密码 ## root密码丢失找回 ## SQL结构化...
MySQL 基础知识培训涵盖了从数据库的基本概念到实际安装和管理操作的多个方面。MySQL 是一款广泛应用的关系型数据库管理系统,特别适合于中小型企业及个人网站的开发,因其开源、免费且性能优秀的特点,常与 PHP、...
# MySQL基础知识笔记 ## 创建表 * 数据类型 |数据类型|大小(字节)|用途|格式| |:------|:--------:|:--:|:--:| |INT|4|整数|| |FLOAT|4|单精度浮点数|| |DOUBLE|8|双精度浮点数|| |ENUM||单选,比如性别|...
**数据库MySQL基础知识总结** 在IT领域,MySQL是一个广泛使用的开源关系型数据库管理系统,以其高效、稳定和易用性而备受青睐。以下是对MySQL基础知识的详细总结: ### 1. MySQL基本概念 - **数据库(Database)*...
这个名为"mysql基础知识2.zip"的压缩包文件显然包含了关于MySQL基础概念、操作和管理的一些教学材料或教程。接下来,我们将深入探讨MySQL的基础知识。 1. **数据库和表的概念**:在MySQL中,数据库是一个组织数据的...
本压缩包“mysql基础知识 1.zip”显然包含了关于MySQL的基础教程或资料,旨在帮助初学者理解并掌握MySQL的基本概念、操作和使用。 1. **MySQL概述** MySQL是一个快速、可靠且可移植的SQL数据库服务器,它由瑞典的...
这份"mysql基础知识详解,完整ppt"提供了全面的学习资源,帮助初学者和教学者快速掌握MySQL的核心概念。以下是对这份PPT中可能涵盖的知识点的详细解读: 1. **MySQL简介**:MySQL是一个开源、免费的数据库系统,它...
超详细mysql基础知识思维导图
在日常开发中,了解这些MySQL基础知识是必不可少的。通过持续学习和实践,你可以掌握更高级的概念,如视图、存储过程、触发器,甚至性能优化和集群部署。无论你是初学者还是经验丰富的开发者,不断深入研究MySQL将有...
MySQL 基础知识 MySQL 是一种关系型数据库管理系统,建立在关系模型上的数据库系统。关系模型将实体(学生)和实体的属性(学生的学号、姓名)保存到数据库中,并规定数据结构,设置数据之间的关系。 MySQL 的...
MySQL基础知识复习
前端开发者了解后端的MySQL基础知识对于前后端协作至关重要。 首先,我们来看看数据库的存储方式。数据库通常以特定的文件形式存储在本地磁盘或者远程服务器上,也可以存在于内存中以实现高速访问。对于云服务,...
这份"快速入门MYSQL基础知识"的资料将引导你逐步了解和掌握MySQL的基础知识,包括安装与配置、数据类型、数据库设计、SQL语句、索引、存储引擎、备份与恢复等方面。 1. **MySQL安装与配置**:首先,你需要在你的...
### 快速入门MYSQL基础知识 #### 一、MySQL简介与安装 MySQL是一种广泛使用的开源关系型数据库管理系统(RDBMS),因其性能稳定、安全性高、易于使用等特点而受到广大开发者的青睐。对于计算机专业的学生来说,掌握...
MySQL基础知识点111