You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法向离线模式sqlx的cargo prepare传递DATABASE_URL和BIN名称参数

问题原因

你遇到的两个报错分别对应两个配置错误:

  • 数据库URL没有用引号包裹:URL中的&符号在shell环境中会被识别为后台执行命令的标识符,不加引号的情况下你输入的命令会被拆分为多个后台子任务,导致--database-url实际只传入了&之前的半截内容,后续的user、password参数都被当作独立命令执行,sqlx-cli自然识别不到完整的数据库链接参数。
  • 参数分隔符--的位置错误:cargo sqlx prepare的参数分为两部分,sqlx-cli自身的参数(如--database-url)需要放在--之前,传递给cargo check的参数(如--bin my-project)需要放在--之后,你之前的传参顺序完全反了。

解决方法

方法1:命令行直接传参

调整参数顺序,同时用单引号包裹数据库URL避免shell解析特殊字符,正确命令如下:

cargo sqlx prepare --database-url 'postgres://postgres@localhost?db_name=postgres&user=postgres&password=postgres' -- --bin my-project

方法2:利用.env文件简化操作

你已经在使用.env配置环境变量,可以直接在.env中新增DATABASE_URL配置项,值为你的完整数据库链接地址,之后无需在命令行传--database-url参数,直接执行以下命令即可:

cargo sqlx prepare -- --bin my-project

sqlx-cli会自动读取.env中的DATABASE_URL变量,不需要额外配置。

执行成功后会在项目根目录生成sqlx-data.json文件,后续编译时sqlx会自动读取该文件实现离线构建。

内容的提问来源于stack exchange,提问作者AMP_035

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 01:15:05