mysql导入报 Error Code: 2006 - MySQL 服务器已离线错误

事情:

        导入数据库是报错,打开错误文件,定位到最后看到错误。随机百度寻找答案

Error occured at:2013-12-26 15:26:58
Line no.:587
Error Code: 2006 - MySQL 服务器已离线

方案:修改max_allowed_packet的值

   方案1. 定位mysql的配置文件,mysql.ini,在[mysqld] 下添加max_allowed_packet  = 500M,重启mysql即可。

     方案2.   修改全局变量命令行下, 

查看系统变量

show variables like '%max%';


修改参数

set global max_allowed_packet  = 500M



### 解决 MySQL 中 '指定的键太长;最大键长度为767字节' 错误 当遇到 `ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes` 的错误时,这通常是因为试图创建超过 InnoDB 表默认允许的最大前缀长度的索引。此限制源于字符集的选择以及存储引擎特性。 #### 修改表字符集 一种解决方案是更改涉及字段的数据类型或其使用的字符集。例如,如果当前使用的是 `utf8mb4` 字符集,则可以考虑切换到占用较少空间的字符集如 `latin1` 或者减少字符串长度来适应索引限制: ```sql ALTER TABLE ApiLog MODIFY COLUMN column_name VARCHAR(191) CHARACTER SET utf8; ``` 这里假设原始列定义超过了VARCHAR(191),并且正在使用多字节字符集(比如 `utf8mb4`),那么通过调整为单字节字符集并适当缩短长度可解决问题[^1]。 #### 调整 innodb_file_format 参数 另一种方法是在服务器配置文件中设置参数以支持更大的页大小从而增加最大索引长度。对于新版本数据库而言,默认情况下已经启用了大页面选项(`innodb_page_size=16k`),但对于较旧实例可能需要手动修改配置项: ```ini [mysqld] innodb_large_prefix = ON innodb_file_format=Barracuda innodb_file_per_table=ON ``` 完成上述变更后重启服务,并确保所有相关表格都转换成 Barracuda 文件格式以便利用这些改进后的功能[^2]。 #### 使用哈希代替冗长文本作为索引部分 针对特定场景下频繁用于过滤条件但本身过长而不适合直接建立索引的情况,可以通过计算该字段内容对应的散列值存入另一新增加的小型辅助列内再对此短小的新建列构建索引来间接加速检索过程。这种方式不仅规避了原有约束还能够有效提升性能表现[^3]。 例如,在给定的例子中,为了优化查询速度而不会违反索引长度限制,可以选择如下方式处理: ```sql ALTER TABLE ApiLog ADD COLUMN verb_url_hash CHAR(32); UPDATE ApiLog SET verb_url_hash = MD5(CONCAT(verb, url)); CREATE INDEX idx_verb_url_hash ON ApiLog(verb_url_hash); ``` 这样做的好处是可以保持原数据结构不变的同时显著改善访问效率[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值