Как мне указать Diesel DATABASE_URL, если в моем пароле есть знак (@)? - PullRequest
1 голос
/ 03 июня 2019

Я начинаю работать с Diesel, следуя их официальной документации .У меня также установлен PostgreSQL.Имя моей базы данных postgres и пароль 1schoollife@.

Я начал с

$ echo DATABASE_URL=postgres://postgres:1schoollife@@localhost/diesel_demo > .env
$ diesel setup

Результаты:

Creating migrations directory at: /home/naufil/Desktop/rust/3june/testing/migrations
Creating database: diesel_demo
database "diesel_demo" already exists

Я создал миграцию:

$ diesel migration generate create_posts
Creating migrations/2019-06-03-182531_create_posts/up.sql
Creating migrations/2019-06-03-182531_create_posts/down.sql

Я получаю следующую ошибку при переносе базы данных:

$ diesel migration run
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: ConnectionError(BadConnection("could not translate host name \"@localhost\" to address: Name or service not known\n"))', src/libcore/result.rs:997:5
note: Run with `RUST_BACKTRACE=1` environment variable to display a backtrace.

1 Ответ

2 голосов
/ 03 июня 2019

Указанный вами DATABASE_URL не тот URL, который вы пытаетесь использовать.@ - это специальный символ, который отделяет учетные данные от имени хоста.Поскольку ваши учетные данные содержат @, необходимо указать URL-адрес:

postgres://postgres:1schoollife%40@localhost/diesel_demo

Сопровождающий дизель sgrif сказал :

Да, кодировка процента100% правильная вещь для нас.

Это было реализовано в PR 1058

...