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的限制了。
解决办法:把部分字段缩减长度,这样表的总体空间变小之后,就可以正常创建了。