#dapr
#dapr
Вопрос:
Мы хотели бы протестировать переключение с redis на компонент хранилища состояний sql.
Из документов похоже, что мы можем сделать это с двумя небольшими изменениями:
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
name: statestore
spec:
type: state.sqlserver # Switch from redis
version: v1
metadata:
- name: connectionString
value: Server=db;Database=dapr;user id=sa;Password=Your_password123;
- name: tableName
value: dapr
И в наш файл docker compose мы добавили sql server
db: # added
image: "mcr.microsoft.com/mssql/server"
ports:
- "1433:1433"
environment:
SA_PASSWORD: "Your_password123"
ACCEPT_EULA: "Y"
networks:
- smi-network
Я предположил, что в базе данных dapr будет создана новая таблица с именем dapr. Но вместо этого мы получаем следующую ошибку:
level=warning msg="error initializing state store statestore (state.sqlserver/v1): failed to create db schema: Unable to open tcp connection with host 'db:1433': dial tcp 172.29.0.2:1433: connect: connection refused" app_id=daprbackend
Что я пропустил, я предположил, что, поскольку все они находятся в одной сети smi-network
, база данных будет вызываться db
(если я войду в оболочку db
, я увижу, что IP-адрес тот же 172.29.0.2
)?
Комментарии:
1. Внезапно он начал работать. Возможно, это связано с тем, что мы переключились на
master
db
Ответ №1:
Глядя на код, база данных создается не для вас. Только таблица. Поэтому, если ваша строка подключения включает базу данных, вы должны сначала создать ее.
Если вы не включите базу данных в строку подключения master
, база данных будет использоваться, и там будет создана таблица.
Сейчас я отправляю запрос на извлечение, чтобы исправить это. Если используемый вами логин имеет разрешения, база данных будет создана для вас.