debezium/postgres 容器在“GENERATED”处或附近出现语法错误

问题描述 投票:0回答:0

我想使用带有 dotnet 核心应用程序的 debezium 和 kafka 创建应用程序。 Kafka、postgres、zookeper 和 connector 在 docker 上运行没有问题。我试过这个 coomand dotnet ef database update --project Kafka.Consumer.Api --verbose 我得到了错误

Failed executing DbCommand (10ms) [Parameters=[], CommandType='Text', CommandTimeout='20']
    CREATE TABLE "Products" (
        "Id" integer GENERATED BY DEFAULT AS IDENTITY (START WITH 100),
        "Name" text NOT NULL,
        "Price" double precision NOT NULL,
        CONSTRAINT "PK_Products" PRIMARY KEY ("Id")
    );
    Disposing transaction.
    Closing connection to database 'HelloWorld' on server 'tcp://127.0.0.1:5431'.
    Closed connection to database 'HelloWorld' on server ''.
    'KafkaConsumerDbContext' disposed.
    Npgsql.PostgresException (0x80004005): 42601: syntax error at or near "GENERATED"

    POSITION: 44
       at Npgsql.Internal.NpgsqlConnector.<ReadMessage>g__ReadMessageLong|213_0(NpgsqlConnector connector, Boolean async, DataRowLoadingMode dataRowLoadingMode, Boolean readingNotifications, Boolean isReadingPrependedMessage)
       at Npgsql.NpgsqlDataReader.NextResult(Boolean async, Boolean isConsuming, CancellationToken cancellationToken)
       at Npgsql.NpgsqlDataReader.NextResult()
       at Npgsql.NpgsqlCommand.ExecuteReader(CommandBehavior behavior, Boolean async, CancellationToken cancellationToken)
       at Npgsql.NpgsqlCommand.ExecuteReader(CommandBehavior behavior, Boolean async, CancellationToken cancellationToken)
       at Npgsql.NpgsqlCommand.ExecuteNonQuery(Boolean async, CancellationToken cancellationToken)
       at Npgsql.NpgsqlCommand.ExecuteNonQuery()
       at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteNonQuery(RelationalCommandParameterObject parameterObject)
       at Microsoft.EntityFrameworkCore.Migrations.MigrationCommand.ExecuteNonQuery(IRelationalConnection connection, IReadOnlyDictionary`2 parameterValues)
       at Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationCommandExecutor.ExecuteNonQuery(IEnumerable`1 migrationCommands, IRelationalConnection connection)
       at Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.Migrate(String targetMigration)
       at Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.UpdateDatabase(String targetMigration, String connectionString, String contextType)
       at Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabaseImpl(String targetMigration, String connectionString, String contextType)
       at Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabase.<>c__DisplayClass0_0.<.ctor>b__0()
       at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action)
      Exception data:
        Severity: ERROR
        SqlState: 42601
        MessageText: syntax error at or near "GENERATED"
        Position: 44
        File: scan.l
        Line: 1127
        Routine: scanner_yyerror
    42601: syntax error at or near "GENERATED"

    POSITION: 44

我的 docker-compose 文件

    version: '3.7'

services:

  postgres:
    image: debezium/postgres
    container_name: postgres
    networks: 
      - broker-kafka
    environment:
      POSTGRES_PASSWORD: fatih
      POSTGRES_USER: admin
    ports:
      - 5431:5432
      
  zookeeper:
    image: confluentinc/cp-zookeeper:latest
    container_name: zookeeper
    networks: 
      - broker-kafka
    ports:
      - 2181:2181
    environment:
      ZOOKEEPER_CLIENT_PORT: 2181
      ZOOKEEPER_TICK_TIME: 2000

  kafka:
    image: confluentinc/cp-kafka:latest
    container_name: kafka
    networks: 
      - broker-kafka
    depends_on:
      - zookeeper
    ports:
      - 9092:9092
    environment:
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:29092,PLAINTEXT_HOST://localhost:9092
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
      KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
      KAFKA_LOG_CLEANER_DELETE_RETENTION_MS: 5000
      KAFKA_BROKER_ID: 1
      KAFKA_MIN_INSYNC_REPLICAS: 1

  connector:
    image: debezium/connect:latest
    container_name: kafka_connect_with_debezium
    networks: 
      - broker-kafka
    ports:
      - "8083:8083"
    environment:
      GROUP_ID: 1
      CONFIG_STORAGE_TOPIC: my_connect_configs
      OFFSET_STORAGE_TOPIC: my_connect_offsets
      BOOTSTRAP_SERVERS: kafka:29092
    depends_on:
      - zookeeper
      - kafka

  kafdrop:
    image: obsidiandynamics/kafdrop:latest
    container_name: kafdrop
    networks: 
      - broker-kafka
    depends_on:
      - kafka
    ports:
      - 9000:9000
    environment:
      KAFKA_BROKERCONNECT: kafka:29092

networks: 
  broker-kafka:
    driver: bridge  

在我用谷歌搜索这个错误后,我看到问题是 postgresql 版本。我应该怎么办?我应该更改 Npgsql (v6.0.2) nuget 包版本还是其他版本?

postgresql .net-core ef-code-first kafka-consumer-api debezium
© www.soinside.com 2019 - 2024. All rights reserved.