gpt4 book ai didi

mysql - 将 CSV 文件上传到 MySQL Docker 容器时的权限问题

转载 作者:行者123 更新时间:2023-11-29 17:26:43 24 4
gpt4 key购买 nike

我正在创建一个 MySQL 5.7 Docker 容器,并希望在容器启动时创建并填充数据库。

首先,Dockerfile:

FROM mysql:5.7

VOLUME /var/lib/mysql-files

ADD ./scripts/kdd_db_create_tables.sql /docker-entrypoint-initdb.d/kdd_db_create_tables.sql

接下来是kdd_db_create_tables.sql的内容:

DROP DATABASE IF EXISTS cdl;
CREATE DATABASE cdl;
USE cdl;

DROP TABLE IF EXISTS kdd;
CREATE TABLE kdd (
duration BIGINT,
protocol_type TEXT,
..
class TEXT);

LOAD DATA LOCAL INFILE '/var/lib/mysql-files/kdd_dataset.csv' INTO TABLE kdd FIELDS TERMINATED BY ',';

ALTER TABLE kdd ADD id INT NOT NULL AUTO_INCREMENT PRIMARY KEY;

最后是 docker-compose 文件:

---
version: '3.5'
services:
mysql:
image: ericsson/mysql5.7:latest
networks:
- cdl_net
ports:
- 3306:3306
hostname: mysql
container_name: mysql
volumes:
- ./mysql/data:/var/lib/mysql-files
environment:
MYSQL_ROOT_PASSWORD: cdl
MYSQL_USER: cdl
MYSQL_PASSWORD: cdl
MYSQL_DATABASE: cdl

networks:
cdl_net:
driver: bridge
name: cdl_net

文件结构如下:

|-- docker-compose.yml
|-- mysql
|-- Dockerfile
|-- data
| |-- kdd_dataset.csv
|-- scripts
|-- kdd_db_create_tables.sql

也就是说,SQL脚本在./mysql/scripts中,而数据集在./mysql/data中。容器执行后,SQL 脚本位于容器中的文件夹 /docker-entrypoint-initdb.d 中,而数据集位于 /var/lib/mysql-files 中> (因为LOAD DATA INFILE要求文件位于所述文件夹中)。但是,当我运行容器时,出现以下错误:

ERROR 13 (HY000) at line 50: File '/var/lib/mysql-files/kdd_dataset.csv' not found (Errcode: 13 - Permission denied)

知道我做错了什么吗?

最佳答案

嗯,问题似乎出在我的(内部)基础设施提供商提供我的家的方式上。我家里不可能安装任何东西:-(

使用/tmp 代替

关于mysql - 将 CSV 文件上传到 MySQL Docker 容器时的权限问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50913342/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com