planetscale/database-js

Local Connection Fails

techgerm opened this issue · 8 comments

Scenario

  1. I run pscale connect galaxy --port 3309 locally to connect to my PlanetScale DB
  2. I attempt to connect my T3 app using import { connect } from "@planetscale/database";

Problem

  1. When I use url to connect to my local db connection, it does not use the specified port - instead is uses port 443:
const connection = connect({
  url: "mysql://root@127.0.0.1:3309"
});

Screenshot 2023-04-09 at 8 13 19 PM

  1. When I use host & username to connect to my local db connection, it uses the correct port but it fails with a ERR_SSL_WRONG_VERSION_NUMBER status code
const connection = connect({
  host: "127.0.0.1:3309",
  username: "root"
});

Screenshot 2023-04-09 at 8 12 30 PM

I'd love to be able to use this package instead of prisma for my next project.

Anything that can be done to help here would be greatly appreciated!

@mattrobenolt thanks for the quick response and clarification!
In that case, do you know how I can specify a DB branch in this configuration?

When you create credentials, they're bound to a branch. So you'd just create credentials for the branch you want, and it'll work. Are you observing something differently?

Ah that's my mistake, didn't realize that was the case. Thanks again for your help!

Out of curiosity, are there any future plans to bridge the protocols?

Bride them how? I have some plans. 👀 But curious what you have in mind.

Hmm let me give it some thought and I'll get back to you!

Jolg42 commented

(Maybe unrelated to your issue? Feel free to ignore)

From what I see, the ERR_SSL_WRONG_VERSION_NUMBER error is caused because fetch tries to do some SSL logic here on a non SSL endpoint.

Changing these 2 lines and switching https to http should make it work.

const url = new URL('/psdb.v1alpha1.Database/Execute', `https://${this.config.host}`)

const url = new URL('/psdb.v1alpha1.Database/CreateSession', `https://${this.config.host}`)