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

M1 Mac Docker下Aerospike注册UDF报Unable to create a new Lua state错误如何解决

解决方案

该Unable to create a new Lua state报错核心是M1芯片arm64架构下,Aerospike服务端的Lua虚拟机初始化失败,结合你的环境具体排查步骤如下:

  • 优先替换适配arm64架构的Aerospike Docker镜像
    官方默认latest标签的镜像是x86_64架构,在M1 Mac下通过Rosetta转译运行时会出现Lua依赖兼容问题,拉取镜像时指定arm64版本即可:
    docker pull aerospike/aerospike-server:latest-arm64
    
    重新创建容器后再尝试注册UDF。
  • 本地预校验UDF语法合法性
    Aerospike使用Lua 5.1版本作为UDF运行环境,高于5.1的Lua语法会直接触发编译错误,你可以在本地提前校验UDF代码:
    1. 将你代码中的{UDF_BODY}内容保存为本地文件,比如test.lua
    2. 安装Lua 5.1版本后执行校验命令:
    luac5.1 -p test.lua
    
    没有任何输出则代表语法合法,排除UDF本身语法问题导致的报错。
  • 验证客户端服务端版本兼容性
    检查你使用的Aerospike Go SDK大版本和服务端大版本是否匹配,跨大版本的API不兼容也会触发UDF注册时的异常。
  • 临时转译方案
    如果暂时需要使用x86_64版本的Aerospike镜像,打开Docker Desktop设置,在「Features in Development」选项中开启「Use Rosetta for x86/64 emulation on Apple Silicon」,重启Docker后运行容器时指定平台参数:
    docker run --platform linux/amd64 -d aerospike/aerospike-server:latest
    
    再尝试注册UDF即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 07:54:03