Oteto Blogのロゴ

【Prisma】migrate devが「could not create the shadow database」とエラーになる

Error: P3014

Prisma Migrate could not create the shadow database. Please make sure the database user has permission to create databases. Read more about the shadow database (and workarounds) at https://pris.ly/d/migrate-shadow

Original error: Error code: P1010

User `user` was denied access on the database `mydb`

Prismaでnpx prisma migrate devしようとすると、上記のエラーになった。

前提

version: '3.8'
services:
  db:
    container_name: db-container
    image: mysql:5.7
    environment:
      MYSQL_DATABASE: mydb
      MYSQL_ROOT_PASSWORD: root_pw
      MYSQL_USER: user
      MYSQL_PASSWORD: user_pw
    ports:
      - '3306:3306'

上記docker-compose.ymlの設定でMySQLのコンテナを立てており、userユーザーでDBに接続しマイグレーションを実行しようとした。

解決法

mysql -u user -p 
grant CREATE, ALTER, DROP, REFERENCES ON *.* to 'user'@'%';

対象ユーザーにCREATE, ALTER, DROP, REFERENCESの権限を付与する。これでマイグレーションが成功した。

公式ドキュメントにもある通り、マイグレーションでshadow databaseを作成する関係上、上記の権限が必要になるらしい。(そのためroleユーザーで接続していれば今回のエラーにはならない)