我想使用带有 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 包版本还是其他版本?