gpt4 book ai didi

node.js - TypeORM 迁移 :run not working errno: -3008, getaddrinfo ENOTFOUND

转载 作者:行者123 更新时间:2023-12-02 16:13:17 26 4
gpt4 key购买 nike

你知道为什么当我尝试运行 typeorm:run 来执行迁移时会出现以下错误吗?

node --require ts-node/register ./node_modules/typeorm/cli.js migration:run
Error during migration run:
Error: getaddrinfo ENOTFOUND users-service-db
at GetAddrInfoReqWrap.onlookup [as oncomplete] (node:dns:69:26) {
errno: -3008,
code: 'ENOTFOUND',
syscall: 'getaddrinfo',
hostname: 'users-service-db',
fatal: true
}
error Command failed with exit code 1.

我的配置是

users-service-db:
environment:
- MYSQL_ROOT_PASSWORD=password
- MYSQL_DATABASE=db
image: mysql:5.7.20
ports:
- "7201:3306"

users-service-db is running does this Error: getaddrinfo ENOTFOUND users-service-db 表示主机不知道要做什么。你能帮忙吗?

在尝试答案 1 和 2 后仍然出现相同的错误不知道该怎么做它以前有效吗?

version: "3"
services:
api-gateway:
build:
context: "."
dockerfile: "./api-gateway/Dockerfile"
depends_on:
- chat-service
- users-service
ports:
- "7000:7000"
volumes:
- ./api-gateway:/opt/app

chat-service:
build:
context: "."
dockerfile: "./chat-service/Dockerfile"
depends_on:
- chat-service-db
ports:
- "7100:7100"
volumes:
- ./chat-service:/opt/app

chat-service-db:
environment:
- MYSQL_ROOT_PASSWORD=password
- MYSQL_DATABASE=db
image: mysql:5.7.20
ports:
- "7200:3306"

phpmyadmin:
image: phpmyadmin/phpmyadmin
ports:
- "7300:80"
volumes:
- ./phpmyadmin/config.user.inc.php:/etc/phpmyadmin/config.user.inc.php

users-service:
build:
context: "."
dockerfile: "./users-service/Dockerfile"
depends_on:
- users-service-db
ports:
- "7101:7101"
volumes:
- ./users-service:/opt/app

users-service-db:
environment:
- MYSQL_ROOT_PASSWORD=password
- MYSQL_DATABASE=db
image: mysql:5.7.20
ports:
- "7201:3306"
hostname: 'localhost'

终于感谢@Eranga Heshan 我解决了错误

我在粘贴时创建了一个额外的 ormConfig.js 文件:

export = {
"type": "mysql",
"host": "localhost",
"port": 7201,
"username": "root",
"password": "password",
"database": "db",
"synchronize": true,
"logging": false,
"entities": [
"src/entities/**/*.ts"
],
"migrations": [
"./src/db/migrations/**/*.ts"
],
"cli": {
"entitiesDir": "src/db/entities",
"migrationsDir": "src/db/migrations"
}
}

然后

node --require ts-node/register ./node_modules/typeorm/cli.js migration:run --config src/db/migrations/ormConfig

最佳答案

您的 VS Code 终端正在您的机器内运行。所以它无法解析 users-service-db 主机。

您可以通过两种方式做到这一点。

1。使用新的配置文件并从您的 localhost

执行迁移
  • 创建一个新的 typeorm 连接配置文件 migrationsOrmConfig.ts 并将其放入您的项目中(假设您将其放入 src/migrations 目录中)

    export = {
    host: 'localhost',
    port: '7201',
    type: 'mysql',
    user : 'root',
    password : 'password',
    database : 'db' ,
    };
  • 现在您可以修改之前用于运行迁移的命令

    node --require ts-node/register ./node_modules/typeorm/cli.js migration:run --config src/migrations/migrationsOrmConfig

2。从容器内的终端执行迁移

  • 在你的 VSCode 终端类型中

    docker ps -a
  • 获取user-serviceCONTAINER ID(假设是CONTAINER_ID)

  • 在容器内打开一个终端

    docker exec -it CONTAINER_ID /bin/bash
  • 执行您之前使用的命令来运行迁移(如果以下命令提示未找到 typeorm Node 模块,您可以将其安装在容器中)

    node --require ts-node/register ./node_modules/typeorm/cli.js migration:run

关于node.js - TypeORM 迁移 :run not working errno: -3008, getaddrinfo ENOTFOUND,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67453800/

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