欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

MYSQL使用遇到错误汇总

程序员文章站 2024-01-12 22:58:22
...

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重启,这会能进到该数据库,但是该表还是不能用:

MYSQL使用遇到错误汇总

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

MYSQL使用遇到错误汇总

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的限制了。

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