[Err] 1286 - Unknown storage engine "FEDERATED"

博客主要讲述运行脚本时出现'[Err] 1286 - Unknown storage engine 'FEDERATED''的问题。解决方法为打开mysql根目录下的'my.cnf'文件,插入'federated',重启mysql服务,再次查看存储引擎状态并重新执行脚本,问题解决。

一、问题现象

运行下面脚本,结果报出“[Err] 1286 - Unknown storage engine 'FEDERATED'”问题

[SQL] CREATE TABLE 'sys_roles' (

  'role_id' int(11) NOT NULL AUTO_INCREMENT,

  'role_name' varchar(255) DEFAULT NULL,

  'role_describe' varchar(255) DEFAULT NULL COMMENT '角色描述',

  'identifying' varchar(50) DEFAULT NULL COMMENT '角色标识',

  'created' datetime DEFAULT NULL COMMENT '创建时间',

  'creator' varchar(255) DEFAULT NULL COMMENT '创建人',

  'last_operation_time' datetime DEFAULT NULL COMMENT '最后操作时间',

  'last_operation' varchar(255) DEFAULT NULL COMMENT '最后操作人',

  'delete_status' tinyint(4) DEFAULT NULL COMMENT '删除标识',

  'expansion1' varchar(255) DEFAULT NULL,

  'expansion2' varchar(255) DEFAULT NULL,

  'expansion3' varchar(255) DEFAULT NULL,

  PRIMARY KEY ('role_id'),

  UNIQUE KEY 'Unique_rolename_departid' ('role_name') USING BTREE

) ENGINE=FEDERATED DEFAULT CHARSET=utf8  CONNECTION='mysql://root:root@139.196.30.xx:3306/cms/sys_roles';

[Err] 1286 - Unknown storage engine 'FEDERATED'

在命令行键入:show ENGINES;结果显示NO,具体如下

FEDERATED    NO   Federated MySQL storage engine    NO    NO    NO

...

二、解决方法

1.打开mysql根目录下“my.cnf”文件,新增一行,插入“federated”,如下:

...

 

federated

2.重启mysql服务

 

3.再重新键入“show ENGINES;”命令,结果显示YES

FEDERATED    YES    Federated MySQL storage engine    NO    NO    NO

4.结果再重新执行创建问题现象脚本,运行Ok!

### 解决方案 对于遇到的 `ERROR 1726 (HY000): Storage engine 'MyISAM' does not support system tables` 或者类似的错误提示,这通常发生在尝试使用 MyISAM 存储引擎来创建或操作系统表时。然而,在现代版本的 MySQL 中,默认存储引擎已经切换到了 InnoDB。 当面对 `'Storage engine InnoDB does not support system tables mysql.user'` 这样的错误信息时,实际上是因为某些特定的操作试图访问由旧版 MySQL 创建的数据文件结构,而这些数据文件可能仍然依赖于 MyISAM 引擎[^1]。 #### 处理方法 为了修复这个问题并确保所有系统表都正确地转换为 InnoDB 类型,可以采取以下措施: - **确认当前使用的存储引擎** 首先检查现有的系统表所采用的是哪种存储引擎: ```sql SELECT TABLE_NAME, ENGINE FROM information_schema.TABLES WHERE TABLE_SCHEMA='mysql'; ``` - **更新系统表至InnoDB** 如果发现任何系统表仍在使用 MyISAM,则可以通过升级脚本来将其迁移到 InnoDB 上。官方提供了专门用于此目的的工具——`mysql_upgrade`命令可以帮助完成这项工作,并且会自动处理必要的更改。 执行该命令前建议先关闭 MySQL 服务再重启它以应用新的配置设置: ```bash net stop mysql; mysqld --upgrade=FORCE; net start mysql; ``` 注意这里假设操作系统环境为 Windows;如果是 Linux 则相应的命令应该是 `sudo service mysql restart`. - **重建权限表** 另外一种情况可能是由于权限表损坏引起的此类问题。此时可考虑通过重置整个权限子系统的方式来解决问题。具体做法如下所示: 停止 MySQL 服务器之后,运行初始化命令重新建立默认账户和权限设定: ```bash mysqld --initialize-insecure --user=mysql ``` 接着再次启动 MySQL 并立即进入安全模式下修改 root 密码: ```sql ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'newpassword!'; FLUSH PRIVILEGES; EXIT; ``` 此过程将会覆盖原有的用户定义以及权限分配,请提前做好充分准备以免造成不必要的影响。 - **其他注意事项** 对于那些报告了类似 `ERROR 1449 (HY000)` 的案例来说,往往涉及到视图定义中的 "definer" 属性丢失的情况。这类问题一般不需要特别针对存储引擎做调整,而是应该关注如何恢复缺失的用户账号或是修正相关的视图定义语句[^2]。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值