1、mysql乱码问题 (1)创建数据库表时指定字符编码(如果java程序是utf8,那这里设置utf8,在java程序里查询能正常显示) (2)set names 'utf8',这样可以在mysql终端select时显示正常。当退出当前窗口时,下次进入还需要再次设置 (3)java插入数据时,如果出现
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的限制了。
解决办法:把部分字段缩减长度,这样表的总体空间变小之后,就可以正常创建了。