LoginSignup
2
0

More than 1 year has passed since last update.

[planetscale][Next.js] serverless-mysqlを通してplanetscale接続

Posted at

今までNext.jsのapi内で、
「serverless-mysql→レンタルVPS内のDBサーバーと接続」
としていたのですが、
昨今流行りの「planetscale」を使ってみたくなりました。

接続にあたって今までと方法が少し異なっていて、数時間悩んだので、
誰かの為に書き残しておきます。

↓今までの接続方法

const db = mysql({
    config: {
        host: process.env.MYSQL_HOST,
        database: process.env.MYSQL_DATABASE,
        user: process.env.MYSQL_USER,
        password: process.env.MYSQL_PASSWORD,
    },
});

planetscaleのDB内のconnectというところを押して、以下のような情報を確認します。

database: ************
username: ************
host: ************
password: ************

「まぁここ書き換えただけで上手くいくだろう」と高を括っていましたが、
うまくいきませんでした。

理由がよく分からなかったので、「DBクライアントからなら繋がるのか??」と思い、
DBeaverから試してみますが、こちらも繋がらず。
ただ、エラーメッセージとして、

server does not allow insecure connections, client must use SSL/TLS

こんなメッセージが出ました。
ということで、DBeaverのSSLタブの設定等をごちゃごちゃ触っていたのですが、結論としては、
image.png
ここのsslModeという項目を許可してあげると接続できました。

ここから着想を得まして、serverless-mysql側も、

const db = mysql({
    config: {
        host: process.env.PS_HOST,
        database: process.env.PS_DATABASE,
        user: process.env.PS_USER,
        password: process.env.PS_PASSWORD,
        ssl: true,
    },
});

「ssl: true」としてあげることで上手く接続することができました。

通信系の知識強い人はこういうの迷わないんですかね。。
つよくなりたい。。!

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0