Search code examples
mysqldockerdocker-compose

MySQL error: Can't initialize batch_readline - may be the input source is a directory or a block device


Mysql 5.7 fails trying to setup init script while starting in docker container. System is Mac ARM64

Docker compose looks like this:

  mysql:
    image: mysql:5.7
    container_name: mysql
    environment:
      MYSQL_ROOT_PASSWORD: 'root'
    ports:
      - '3306:3306'
    expose:
      - '3306'
    volumes:
      - ./init.sql:/docker-entrypoint-initdb.d/init.sql
      - mysql:/var/lib/mysql:rw

As result Mysql throws error:

mysql | ERROR: Can't initialize batch_readline - may be the input source is a directory or a block device. mysql exited with code 1


Solution

  • The problem is that docker compose doesn't recognize '.' as current directory. Solution is:

        volumes:
          - $PWD/init.sql:/docker-entrypoint-initdb.d/init.sql