![mariaDB < DATA DIRECTORY > 选项无法在 tmp 文件夹之外的目录中创建表](https://linux22.com/image/740890/mariaDB%20%3C%20DATA%20DIRECTORY%20%3E%20%E9%80%89%E9%A1%B9%E6%97%A0%E6%B3%95%E5%9C%A8%20tmp%20%E6%96%87%E4%BB%B6%E5%A4%B9%E4%B9%8B%E5%A4%96%E7%9A%84%E7%9B%AE%E5%BD%95%E4%B8%AD%E5%88%9B%E5%BB%BA%E8%A1%A8.png)
我在用着:
- MariaDB 10.4.6
- Debian GNU/Linux 9(延伸)
- 内核:Linux 4.9.0-9-amd64
我刚开始学习数据库。一个要点是将表的实际数据放在单独的 SSD 上。
无论如何,我找到了这个可以实现这一目标的例子:
CREATE TABLE t1 (c1 INT PRIMARY KEY) ENGINE=InnoDB DATA DIRECTORY='/path/to/folder/';
现在的问题是,我收到了以下错误消息:
ERROR 1005 (HY000): Can't create table `testdb`.`t2` (errno: 168 "Unknown (generic) error from engine")
我发现了 mariaDB 错误 1005,但没有关于引擎错误 168 的更多信息。我假设 InnoDB 的意思是“引擎”。
进一步的测试表明,如果我使用 /tmp/ 文件夹及其子文件夹,一切都会正常。后者只是将该文件夹的读写权限授予所有用户。
但是,即使文件夹的权限为 777,对于 /tmp/ 之外的每个文件夹,我都会遇到相同的错误。这与 mysql 用户无关,如果 root 运行命令,则两者都不起作用。
将文件夹的所有者更改为 mysql 也无济于事。
我认为这可能是 apparmor。我以前从未遇到过这个问题,因为如果我运行:
$ service apparmor reload
我得到:
apparmor:无法识别的服务
如果我跑
$ systemctl stop apparmor
我得到:
无法停止 apparmor.service:单元 apparmor.service 未加载。
因此我很确定 apparmor 没有在我的系统上运行。
因此,我陷入了困境。我甚至不知道如何措辞问题来获取更多信息或更接近这个问题的解决方案 :(
提前感谢您的任何建议。