MYSQL使用遇到错误汇总

1、Mysql乱码问题

(1)创建数据库表时指定字符编码(如果Java程序是UTF8,那这里设置UTF8,在Java程序里查询能正常显示)

(2)set names 'utf8',这样可以在mysql终端select时显示正常。当退出当前窗口时,下次进入还需要再次设置

(3)Java插入数据时,如果出现乱码在jdbc:mysql://ipaddress/dbname?characterEncoding=UTF-8,可以得到解决

drop table rule_config;
create table rule_config(name varchar(1000),url varchar(1000),frequency int,is_use int) ENGINE=InnoDB AUTO_INCREMENT=40 DEFAULT CHARSET=utf8 COMMENT='拦截规则配置';
set names 'utf8';
show variables like 'char%';
show create table rule_config;

2.mysql删除数据之后,空间不会马上释放,需要用optimize 命令来执行如下之后空间就可以释放出来了。

OPTIMIZE TABLE 命令来进行表优化。这个命令可以将表中的空间碎片进行合并,并且可以消除由于删除或者更新造成的空间浪费 。OPTIMIZE TABLE 命令只对 MyISAM 、 BDB 和 InnoDB 表起作用

mysql> optimize table wap_top_ip_access_url;
+----------------------------+----------+----------+----------+
| Table                      | Op       | Msg_type | Msg_text |
+----------------------------+----------+----------+----------+
| wmdb.wap_top_ip_access_url | optimize | status   | OK       |
+----------------------------+----------+----------+----------+
1 row in set (17.79 sec)

在执行这个命令时,先确保别的程序没有使用这张表,如果有两个程序都在使用的话,会引起锁表的情况,可能会导致磁盘空间占满的情况,然后此数据库也进不了,遇到这种情况需要把mysql重启,这会能进到该数据库,但是该表还是不能用:


此时需要对这表进行修复:进到/var/lib/mysql/wmdb目录下,先把mysql服务停掉,然后执行myisamchk -r table_name.MYI,执行完之后再重启服务就可以了。

3、ERROR 1118 (42000): Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. You have to change some columns to TEXT or BLOBs

在执行创建表时报以上错误,此时是指定utf8编码,其中各个字段的长度设置都没有超过限定的范围,这个可能是超过 一个表 关于 非十六进制字段 64k的限制了。

解决办法:把部分字段缩减长度,这样表的总体空间变小之后,就可以正常创建了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值