MySql 使用总结

20 篇文章 0 订阅
一、乱码!!!!!!!
MySql中文乱码 搞了一上午,终于好了,记录一下!

情况说明:自己手贱在网上找了个shell 在服务器上执行了一下,本来想把免费安装的mysql5.0注册到windows 系统服务里,结果 我发现原来安装的 这个mysql 已经 注册过了,接下来悲剧发生了,我怎么启动服务都不行了。报:1067 说进程意外终止,在任务管理器中看了一下确实 mysqld进程启动不起来。然后在网上海搜各种方法,结果都无功而返。更可怕的是,这时候,数据库表部分损坏了(至今不知道为什么)。还好我有之前的备份。在这里提醒大家:数据库操作之前一定要记得备份,否则就收拾东西走人吧。
好吧,数据库不能用了,删除之,重新解压一下免安装版本的。然后用那个shell执行一下,发现不能注册到系统服务里。想其它办法,最后还是在原来那个noinstall版本里找到了解决办法:在mysql 目录里放三个文件my.ini、MyFile.class、启动MySql服务.bat(这三个文件在附件中)。相信看到第二个文件大家就能猜到了,[color=red]要安装 JDK 。注:这个方法不一定适用大部分机器。[/color]除了MyFile.class逐个用notepad打开看一下,你就明白怎么会事了。其实MyFile.class你也可以反编译一下,也就明白了。双击“启动MySql服务.bat”把MySql5.0 免安装版注册到windows系统服务里去。
  啰嗦了半天,乱码来了。我把备份导入现在的mysql中,发现中文乱码。
查看库的编码方式 命令行登陆MySql
mysql> show variables like '%character%';
+--------------------------+---------------------------------------+
| Variable_name | Value |
+--------------------------+---------------------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | D:\mysql-5.0.22-win32\share\charsets\ |
+--------------------------+---------------------------------------+
8 rows in set (0.00 sec)

看到了吧(具体什么意思自己在网上找吧)。,这些编码让人头疼啊。根据实际项目情况修改掉他们吧。
1、my.ini中配置
 [mysql]
default-character-set=gbk
[mysqld]
character-set-server=gbk

2、MySql>set names 'GBK'
(这条命令会同时修改character_set_client,character_set_connection,character_set_results)
3、重启mysql

---------------------------------------------------------------------
总结:[color=red]1、修改数据库前要备份[/color]
2、遇到问题不要着急着在网上搜到所谓的解决 办法就直接在服务器上动刀,找一台测试机器,在上面模拟解决 办法。

二、常见错误
1、[ERROR] MySQL: Table 'XXX' is marked as crashed and should be repaired
[quote]
出现表损坏的根本原因是:你的表使用了myisam存储引擎。
myisam存储引擎主要用于select,如果用于insert,update,delete由于内部缺陷和异常数据访问经常造成索引文件损坏,注意是“经常”。

因此解决办法有二:
1.用myisamchk工具修复。一旦文件损坏只能暂停web访问,用myisamchk工具修复后可恢复正常。(暂时性,不能解决根本问题)
①首先将mysql \bin 设置到path中去(为了解决执行命令时报找不到路径) 然后输入以下命令

myisamchk -c -r /path/*.MYI --修复路径下所有MYI文件(也可以指定某个文件),如果报错, 加个 -r 强制修复

2.把表转换为innodb存储引擎。对用户来说是透明的,对程序逻辑不受任何影响,永久解决索引文件损坏的问题。
可通过以下语句把存储引擎转换为innodb。:
alter table tablename engine=innodb;

[/quote]
2、[ERROR] 1067
问题描述:重新安新mysql5.5.17时,在配置到最后时,无法start service
解决思路:看my.ini 配置文件,找到datadir 路径,看xxx.err文件.根据提示,作相应处理。
[url=http://www.54xue.com/w/36/n-31036.html]http://www.54xue.com/w/36/n-31036.html[/url]

3、[ERROR] 1130 : Host '192.168.1.54' is not allowed to connect to this MySQL server

这段英文,有点误导人,让人感觉是客户端这边出了问题,其实是服务器那边的问题。解决办法有好几种,这里用改表法处理。更改"mysql" 数据库里的 "user" 表里的 "host"项,从"localhost"改称"%"

#>mysql -uroot -p //登录mysql
mysql> show databases;
mysql>use mysql;
mysql>select host,user from user;
mysql>update user set host = '%' where user ='root'; --更改
mysql>flush privileges; #刷新一下权限


4、mysql 本地不能登陆,但远程可以登陆!
原因:mysql 库的user 表中,有一个host叫localhost 的用户,没有设置用户名和密码.
远程登陆后,找mysql 库,找到user 表,打开设置一下host 为localhost 的用户名和密码。权限也设置一下,然后刷新权限,重启mysqld 服务。

5、[Err] #1293 - Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause
某表中字段有多于一个类型为timestamp 时,一个指定时间,另外的其它该类型字段不要设置current_timestamp 否则就会报这个错误。[url=http://blog.csdn.net/core_cto/article/details/8663056]引用文章[/url]


三、性能优化(血泪之旅)
1、centos6.5 rpm 安装的 mysql5.6.19 初始内存过大的问题(初始内存在400M以上),小内存玩家吃不消的。
/etc/my.cnf 配置文件修改一下配置:

#一定要在这个服务器端下面配置(否则不会生效),说多了都是眼泪!
[mysqld]
performance_schema_max_table_instances=600
table_definition_cache=400
table_open_cache=256

然后重启mysql 服务!


参考:1、[url=http://www.cnblogs.com/AloneSword/p/3207697.html]mysql 性能优化方向[/url]
2、[url=http://www.cnblogs.com/captain_jack/archive/2010/10/12/1848496.html]参数说明[/url]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值