知り合いに、ORマッパーとして「prisma」というものがあるということで勉強中。
Node.js TypeScript などで使用される、ということで、今後注目のORM。
自分の環境にあるのがMySQLなので、MySQLに接続しようということで
接続文字列の書き方を こちら を参考に作成。
MySQLのほかのDBの接続文字列もまとまっていてわかりやすいですね。
ただ、MySQLの場合ですが、私の環境だと、ユーザのパスワードに @ が入っています。
(たとえば p@ssword)
MySQへの接続文字列が
url = "mysql://janedoe:mypassword@localhost:3306/mydb"
url = "mysql://janedoe:p@ssword@localhost:3306/mydb"
どこまでがパスワードで、どこからが接続先なのかがわからない!
最初はシングルクォーテーションで囲ってみました。
url = "mysql://janedoe:'p@ssword'@localhost:3306/mydb"
でもダメ。
ユーザごと囲うか?
url = "mysql://'janedoe:p@ssword'@localhost:3306/mydb"
どうしたものかと思案していたところ、「Example」のすぐ上にありましたね。解決策が。
Special charactersFor MySQL, PostgreSQL and CockroachDB you must percentage-encode special characters in any part of your connection URL - including passwords. For example, p@$$w0rd becomes p%40%24%24w0rd.
@→%40
$→%24
ですね。
その他の文字の詳しい対応が、こちら にありました。
でも何の変換だろう。。。
パーセントエンコーディング?聞いたことないな、、、URLエンコーディングなら聞いたことあるが、、、
調べてみると、ほぼ
URLエンコーディング = パーセントエンコーディング
として認識されている模様。ただ、半角スペースの場合
URLエンコーディング → +
パーセントエンコーディング → %20
と、変換方法が違う。これが「パーセント」たる所以か。
ちなみに今回の例を、パーセントエンコーディングで変換すると
url = "mysql://'janedoe:p%20ssword'@localhost:3306/mydb"
いい勉強になったな。。。