我正在启动一个全新的 PlanetScale 支持的项目,并使用 Prisma 设置。我按照这个官方文档上的说明进行操作(除了更改数据库的名称),在本地代理到数据库后,我发现自己无法运行
npx prisma db push
命令,出现以下错误:
server does not allow insecure connections, client must use SSL/TLS
我对数据库设置非常陌生,在此之前我从来不知道我需要配置任何这些连接,因为我认为它们是作为我正在使用的数据库设置的一部分来处理的。
我知道我通过 Prisma 使用的 mySql 在对数据库执行任何交互之前需要 SSL 或 TLS,但我还没有找到任何方法来为我的环境进行设置。
我看到有人提到将
?tls={true}
添加到我的 DATABASE_URL
的末尾,但这没有任何作用。此外,鉴于所提供的 DATABASE_URL
是由 PlanetScale 提供为
DATABASE_URL='mysql://un5pbmobnc73muwvbo77:************@us-east.connect.psdb.cloud/*******?ssl={"rejectUnauthorized":true}'
我尝试将
{"rejectUnauthorized":true}
更改为{"rejectUnauthorized":false}
。这也没有改变什么。
涉及对象的更复杂的解决方案是导致我的数据库完全找不到的参数。
我知道 SSL 已被弃用,我不应该使用它,但我不仅不知道如何正确地将 TLS 添加到我的 mySQL,而且正如您可能已经确定的那样,我发现自己有些无法完全掌握这个概念它的实施完全。
将
?ssl={"rejectUnauthorized":true}
替换为 ?sslaccept=strict
。下面是一个例子。
DATABASE_URL="mysql://xxxx:[email protected]/zzzz?sslaccept=strict"
详情写在下面。
https://www.prisma.io/docs/concepts/database-connectors/mysql#arguments
祝你好运!
对于 Laravel 应用程序,您的“.env”文件应如下所示:
注意:您可以按照以下步骤从您的 Planetscale 帐户获取这些凭据:
恭喜!
DATABASE_URL='mysql://un5pbmobnc73muwvbo77:*****@us-east.connect.psdb.cloud/?ssl={"rejectUnauthorized":true}&&sslaccept=strict'