filesystem error: in create_directories: Read-only file system ["//.kuzu"] Abort...

2025年09月16日 10:16 响应: 3.59秒 状态: success

🚨 错误信息

libc++abi: terminating due to uncaught exception of type std::__ndk1::__fs::filesystem::filesystem_error: filesystem error: in create_directories: Read-only file system ["//.kuzu"] Aborted

🤖 AI解决方案

libc++abi: terminating due to uncaught exception of type std::__ndk1::__fs::filesystem::filesystem_error: filesystem error: in create_directories: Read-only file system ["//.kuzu"]
Aborted

// 核心错误翻译:
// libc++abi: 由于未捕获的异常而终止,异常类型为 std::__ndk1::__fs::filesystem::filesystem_error: 文件系统错误:在 create_directories 中:只读文件系统 ["//.kuzu"]

原因分析

程序尝试在只读文件系统上创建目录 //.kuzu,因此操作失败。

解决方案

确保运行程序的目录具有写入权限。如果这是服务器环境,您可能需要更改目录的所有权或权限。

例如,在 Linux/macOS 环境下,可以尝试:

# 假设您想在用户主目录下的一个新目录中运行
mkdir ~/my_kuzu_data
cd ~/my_kuzu_data
# 重新运行您的程序

或者,如果 .kuzu 应该位于当前可写目录,请修改您的代码,使用一个明确的可写路径:

++
#include <filesystem>
#include <iostream>

namespace fs = std::filesystem;

int main() {
    try {
        // 示例:使用当前目录下的 .kuzu 目录
        fs::path kuzu_path = "./.kuzu";
        // 或者使用一个已知可写的路径,例如用户主目录
        // fs::path kuzu_path = fs::path(getenv("HOME")) / ".kuzu";

        if (!fs::exists(kuzu_path)) {
            fs::create_directories(kuzu_path);
            std::cout << "Directory created: " << kuzu_path << std::endl;
        } else {
            std::cout << "Directory already exists: " << kuzu_path << std::endl;
        }
    } catch (const fs::filesystem_error& e) {
        std::cerr << "Filesystem error: " << e.what() << std::endl;
        return 1;
    }
    return 0;
}

预防措施

  • 在部署或运行程序前,检查目标运行环境的文件系统权限。
  • 在代码中为文件和目录操作指定明确且可写的文件路径,避免依赖于默认或可能受限的路径。