我正在启动一个全新的PlanetScale支持的项目,带有Prisma设置。我按照这个官方文档上的说明(除了更改数据库的名称),在本地代理到数据库后,我发现自己无法运行npx prisma db push
命令,得到以下错误:
server does not allow insecure connections, client must use SSL/TLS
我对数据库设置非常陌生,在此之前我从来没有想过我需要配置任何这些连接,因为我认为它们是作为我正在使用的数据库设置的一部分处理的。
我知道mySql,我通过Prisma使用的,在它对数据库执行任何交互之前需要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:yyyy@ap-northeast.connect.psdb.cloud/zzzz?sslaccept=strict"
详情如下。
https://www.prisma.io/docs/concepts/database-connectors/mysql参数祝你好运!
对于Laravel应用程序,您的";文件看起来应该像这样:
- DB_CONNECTION = mysql
- DB_HOST = XXXX
- DB_PORT = XXXX
- DB_DATABASE = XXXX
- DB_USERNAME = XXXX
- DB_PASSWORD = XXXX
- MYSQL_ATTR_SSL_CA = XXXX
注意:您可以通过以下步骤从您的Planetscale帐户获得这些凭据:
- 单击要获取凭据的数据库。
- 点击"概览"菜单选项。
- 点击"获取连接字符串"在右下角。
- 从"连接"下拉选项,选择"Laravel">
- 从您的".env"文件。
- 运行"php artisan optimize:clear"命令,就可以开始了。
恭喜你!