当我尝试在节点 REPL (Node.js v 18.4.1) 上运行它时,我得到了提到的错误:
new URL('sqlserver://localhost:1433;database=mydb;user=sa;password=mySpiffyPassword;trustServerCertificate=true')
奇怪的是,如果我在密码末尾添加
@
(mySpiffyPassword@
),它不会出错。 (虽然这不是我的数据库密码,所以显然永远不会这样做。)
背景:我碰巧试图在使用 Prisma 的应用程序中使用连接字符串,所以我在节点 REPL 中尝试了这个,效果很好:
new URL('sqlserver://localhost:1433;database=mydb;user=sa;password=r@ndomP@$$w0rd;trustServerCertificate=true')
网址来自here.
我将
r@ndomP@$$w0rd
值慢慢地推向 mySpiffyPassword
并将其缩小到 @
字符产生差异。这让我在 Node 文档中找到了this,其中也提到了@
字符。
我试过
new URL('sqlserver://sa:mySpiffyPassword@localhost:1433;database=mydb;trustServerCertificate=true')
但这也引发了无效的 URL 错误。
我知道连接字符串是有效的(或至少是正确的),因为我能够使用它运行
npx prisma pull
并且工作得很好; Prisma 连接并填充了我的 schema.prisma
文件,其中包含我数据库中的所有表。 Prisma 与问题无关 - 只是提到它是因为它证明了 URL 是有效的 - 只是不是为了让 Node 的new URL()
对此感到满意。