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

在Solana部署智能合约时遇报错:账户非可升级程序或已被占用

Solana合约部署错误:Account is not an upgradeable program or already in use

针对这个错误,你可以按以下步骤排查解决:

  • 检查目标账户状态
    运行solana account <错误中的账户地址>查看账户详情:

    • 如果账户是普通非程序账户,说明你选错了部署目标,需要更换为专门的程序账户。
    • 如果账户已被其他程序占用,可执行solana close <账户地址>关闭该账户(账户内SOL会转回升级权威账户),之后重新部署。
  • 确认升级able程序部署流程

    • 首次部署升级able程序时,需确保使用正确的命令创建程序账户:
      solana program deploy --program-id <你的程序账户地址> --upgrade-authority <升级权威账户地址> <程序.so文件路径>
      
      用Anchor开发的话,要保证Anchor.toml中upgrade_authority配置正确,且程序账户是为升级场景创建的。
    • 升级现有程序时,必须指定之前创建的升级able程序账户,且升级权威账户和初始部署时一致。
  • 重新生成程序账户密钥

    • 删除target/deploy目录下对应的程序密钥文件(比如shii-keypair.json),重新运行部署命令,Anchor会自动生成新的合法程序账户。
    • 也可手动生成新密钥对:
      solana-keygen new -o target/deploy/shii-keypair.json
      
      生成后重新执行部署。
  • 验证网络与账户余额

    • 用solana cluster-info确认当前连接的是devnet(和部署命令中的网络一致)。
    • 运行solana balance <升级权威账户地址>检查账户是否有足够SOL支付部署手续费。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 19:18:38