#Prisma #MySQL 本地开发时如何设置Prisma和MySQL

1,104 阅读2分钟

本地MySQL设置

  1. 本地开发nodejs应用时,可以用DockerMySQL服务,但是在开发阶段不建议将nodejs服务也放在Docker中运行,因为开发阶段可能还有修改数据库结构的需求,这样就需要频繁进入Docker去修改Prismamigration文件,非常繁琐;建议等到数据库设计确定之后,在前后端联调的时候将nodejs服务放在Docker中运行;

本地Prisma设置

连接MySQL

NestJS为例,在项目根目录生成的.env文件中设置mysql地址Prisma就会通过这个地址去连接运行在Docker中的MySQL

DATABASE_URL="mysql://root:888888@localhost:3306/cook-master?connect_timeout=300"

创建迁移

修改PrismaModel之后,重新生成数据库结构时,可能会提示与之前的数据库结构有冲突,所以需要清空数据库数据(虽然说是测试数据,但是也是自己输进去的,一下子清空之后又要一条一条加很麻烦);这个时候可以按照这个步骤来进行迁移:

  1. 在项目的根目录下运行以下命令来创建一个新的迁移;替换 <MIGRATION_NAME> 为新迁移的名称,例如 add-new-field

    npx prisma migrate dev --name <MIGRATION_NAME> --preview-feature
    
  2. 编辑新创建的迁移文件(位于 prisma/migrations/ 目录下),将 up 函数中的 SQL 语句修改为更新模型结构的语句。例如,如果你要向表中添加一个新字段,则可以使用以下 SQL 语句;替换 <TABLE_NAME> 为表的名称,<COLUMN_NAME> 为新字段的名称,<DATA_TYPE> 为新字段的数据类型。

    ALTER TABLE <TABLE_NAME> ADD COLUMN <COLUMN_NAME> <DATA_TYPE>;
    
  3. 保存并关闭迁移文件后,运行以下命令来应用迁移;这样就可以应用新的迁移并更新数据库模式,同时保留数据库中的现有数据。

    npx prisma migrate deploy --preview-feature
    

导出DockerMySQL中数据的方法

  1. 查找正在运行的MySQL容器的 ID;这样我们就能看到所有正在运行的容器列表,其中应包括MySQL容器的名称和 ID。

image.png

  1. 创建一个MySQL数据库的数据备份;替换 <CONTAINER_ID> 为第一步中找到的 MySQL 容器的 ID,<MYSQL_USER><MYSQL_PASSWORD> 为 MySQL 数据库的用户名和密码,<MYSQL_DATABASE> 为要备份的数据库名称。这样就可以将备份保存在运行命令的目录下名为 backup.sql 的文件中。
docker exec <CONTAINER_ID> /usr/bin/mysqldump -u <MYSQL_USER> --password=<MYSQL_PASSWORD> <MYSQL_DATABASE> > backup.sql
  1. 或者我们可以使用以下命令,将备份文件指导复制到我们需要使用的本地目录中;替换 <CONTAINER_ID> 为 MySQL 容器的 ID,/backup.sql 为第二步中备份文件的路径和名称,/path/on/local/machine 为本地计算机上要复制到的路径。
docker cp <CONTAINER_ID>:/backup.sql /path/on/local/machine

image.png

这样就完成啦!

如果还有更好的方法,欢迎评论👏🏻