mysql各种问题

上传人:日度 文档编号:146137430 上传时间:2020-09-26 格式:DOC 页数:7 大小:59KB
返回 下载 相关 举报
mysql各种问题_第1页
第1页 / 共7页
mysql各种问题_第2页
第2页 / 共7页
mysql各种问题_第3页
第3页 / 共7页
mysql各种问题_第4页
第4页 / 共7页
mysql各种问题_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《mysql各种问题》由会员分享,可在线阅读,更多相关《mysql各种问题(7页珍藏版)》请在金锄头文库上搜索。

1、一、mysqld 已死,但是 subsys 被锁(1)Mysql常出现这个问题,首先可能是版本太低,功能不稳定或者网络不好等原因,因为我遇到过,连续重启了几次就正常了,以下这种情况:rootlocalhost /# service mysqld restart停止 MySQL: 确定 启动 MySQL: 确定 rootlocalhost /# service mysqld statusmysqld 已死,但是 subsys 被锁rootlocalhost /# service mysqld restart停止 MySQL: 失败启动 MySQL: 确定 rootlocalhost /# ser

2、vice mysqld restart停止 MySQL: 确定 启动MySQL: 确定 rootlocalhost /# service mysqld statusmysqld (pid 5885) 正在运行.(2) 当mysql部署在linux系统上,安装目录下、etc/f文件配置出现错误,也可能会报这个错,建议检查一下这个文件配置是否正确。二、使用mysql时,创建之后经常会遇到table .doesnt exist.如果确认数据库表已创建好,那么可能就是大小写敏感造成的,linux系统下的f文件下mysqlddatadir=/var/lib/mysqlsocket=/var/lib/my

3、sql/mysql.sockuser=mysql.(1)默认的是lower_case_table_names=0,此时是表名大小写敏感, 即sql语句引用的 表名要和mysql数据库表名大小写完全一致。否则 就会报错找不到table。(2)设置lower_case_table_names=1,此时是表名大小写不敏感,即忽略大小写。 但是注意:这种忽略大小写是指编译sql语句时自动把sql语句全部转换成小写后才执行, 所以这就要求在建表的时候表名用全部小写字母,这样才能确保生气了语句执行的时候 能找到表。为避免这种情况,可以先设置为1,然后再建表,不管建表语句时大写还是小 写,执行时都会转换成小

4、写;(3)lower_case_table_names=2,本人暂时没有用到。 查询lower_case_table_names的值 可以用show variables like lower%;参数说明如下: 参数值 解释0使用CREATE TABLE或CREATE DATABASE语句指定的大小写字母在硬盘上保存表名和数据库名。名称比较对大小写敏感。在大小写不敏感的操作系统如windows或Mac OS x上我们不能将该参数设为0,如果在大小写不敏感的文件系统上将-lowercase-table-names强制设为0,并且使用不同的大小写访问MyISAM表名,可能会导致索引破坏。1表名在硬盘

5、上以小写保存,名称比较对大小写不敏感。MySQL将所有表名转换为小写在存储和查找表上。该行为也适合数据库名和表的别名。该值为Windows的默认值。2表名和数据库名在硬盘上使用CREATE TABLE或CREATE DATABASE语句指定的大小写字母进行保存,但MySQL将它们转换为小写在查找表上。名称比较对大小写不敏感,即按照大小写来保存,按照小写来比较。注释:只在对大小写不敏感的文件系统上适用! innodb表名用小写保存。三、今天部署一个项目:linux环境下创建mysql数据库,创建数据库,插入数据后中文显示乱码,全部都是问号,部分还带有数字,如:?2?3通过网上提供的方法:需要修改

6、/etc/f,在mysqld下加入character-set-server=utf8 而不是default-character-set = utf8,client下加入default-character-set = utf8然后客户端连接数据库,中文显示正常,而secureCRT是中文乱码,如这样:偲潪散琺偆湳潬攍,然后继续解决,通过命令:show variables like character_set%其中character_set_results的值是utf8,因为linux下默认的编码是gb2312,所以这里需要修改set character_set_results =gb2312;然

7、后重启数据库,就能正常显示中文内容了。启动/停止命令四、用户变量可以先在用户变量中保存值然后在以后引用它;这样可以将值从一个语句传递到另一个语句。用户变量与连接有关。也就是说,一个客户端定义的变量不能被其它客户端看到或使用。当客户端退出时,该客户端连接的所有变量将自动释放。用户变量的形式为var_name,其中变量名var_name可以由当前字符集的文字数字字符、.、_和$组成。 默认字符集是cp1252 (Latin1)。可以用mysqld的-default-character-set选项更改字符集。参见5.10.1节,“数据和排序用字符集”。用户变量名对大小写不敏感。设置用户变量的一个途径

8、是执行SET语句:SET var_name = expr , var_name = expr .对于SET,可以使用=或:=作为分配符。分配给每个变量的expr可以为整数、实数、字符串或者NULL值。也可以用语句代替SET来为用户变量分配一个值。在这种情况下,分配符必须为:=而不能用=,因为在非SET语句中=被视为一个比较 操作符:mysql SET t1=0, t2=0, t3=0;mysql SELECT t1:=(t2:=1)+t3:=4,t1,t2,t3;+-+-+-+-+| t1:=(t2:=1)+t3:=4 | t1 | t2 | t3 |+-+-+-+-+| 5 | 5 | 1

9、| 4 |+-+-+-+-+用户变量可以用于表达式中。目前不包括明显需要文字值的上下文中,例如SELECT语句的LIMIT子句,或者LOAD DATA语句的IGNORE number LINES子句。如果使用没有初始化的变量,其值是NULL。如果用户变量分配了一个字符串值,其字符集和校对规则与该字符串的相同。用户变量的可压缩性(coercibility)是隐含的。(即为表列值的相同的可压缩性(coercibility)。注释:在SELECT语句中,表达式发送到客户端后才进行计算。这说明在HAVING、GROUP BY或者ORDER BY子句中,不能使用包含SELECT列表中所设的变量的表达式。

10、例如,下面的语句不能按期望工作:mysql SELECT (aa:=id) AS a,(aa+3) AS b 从tbl_name HAVING b=5;HAVING子句中引用了SELECT列表中的表达式的别名,使用aa。不能按期望工作:aa不包含当前行的值,而是前面所选的行的id值。一般原则是不要在语句的一个部分为用户变量分配一个值而在同一语句的其它部分使用该变量。可能会得到期望的结果,但不能保证。设置变量并在同一语句中使用它的另一个问题是变量的默认结果的类型取决于语句前面的变量类型。下面的例子说明了该点:mysql SET a=test;mysql SELECT a,(a:=20) FROM

11、 tbl_name;对于该SELECT语句,MySQL向客户端报告第1列是一个字符串,并且将a的所有访问转换为字符串,即使a在第2行中设置为一个数字。执行完SELECT语句后,a被视为下一语句的一个数字。要想避免这种问题,要么不在同一个语句中设置并使用相同的变量,要么在使用前将变量设置为0、0.0或者以定义其类型。未分配的变量有一个值NULL,类型为字符串。五、系统变量MySQL可以访问许多系统和连接变量。当服务器运行时许多变量可以动态更改。这样通常允许你修改服务器操作而不需要停止并重启服务器。mysqld服务器维护两种变量。全局变量影响服务器整体操作。会话变量影响具体客户端连接的操作。当服务

12、器启动时,它将所有全局变量初始化为默认值。这些默认值可以在选项文件中或在命令行中指定的选项进行更改。服务器启动后,通过连接服务器并执行SET GLOBALvar_name语句,可以动态更改这些全局变量。要想更改全局变量,必须具有SUPER权限。服务器还为每个连接的客户端维护一系列会话变量。在连接时使用相应全局变量的当前值对客户端的会话变量进行初始化。对于动态会话变量,客户端可以通过SET SESSIONvar_name语句更改它们。设置会话变量不需要特殊权限,但客户端只能更改自己的会话变量,而不能更改其它客户端的会话变量。对于全局变量的更改可以被访问该全局变量的任何客户端看见。然而,它只影响更

13、改后连接的客户的从该全局变量初始化的相应会话变量。不影响目前已经连接的客户端的会话变量(即使客户端执行SET GLOBAL语句也不影响)。可以使用几种语法形式来设置或检索全局或会话变量。下面的例子使用了sort_buffer_sizeas作为示例变量名。要想设置一个GLOBAL变量的值,使用下面的语法:mysql SET GLOBAL sort_buffer_size=value;mysql SET global.sort_buffer_size=value;要想设置一个SESSION变量的值,使用下面的语法:mysql SET SESSION sort_buffer_size=value;m

14、ysql SET session.sort_buffer_size=value;mysql SET sort_buffer_size=value;LOCAL是SESSION的同义词。如果设置变量时不指定GLOBAL、SESSION或者LOCAL,默认使用SESSION。参见13.5.3节,“SET语法”。要想检索一个GLOBAL变量的值,使用下面的语法:mysql SELECT global.sort_buffer_size;mysql SHOW GLOBAL VARIABLES like sort_buffer_size;要想检索一个SESSION变量的值,使用下面的语法:mysql SELECT sort_buffer_size;mysql SELECT session.sort_buffer_size;mysql SHOW SESSION VARIABLES like sort_buffer_size;这里,LOCAL也是SESSION的同义词。当你用SELECT var_name搜索一个变量时(也就是说,不指定global.、session.或者local.),MySQ

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号