从存储中选择数据时,抛出异常 'Procedure 'ddl.get_schema' is not defined'

when selecting data from the storage, an exception is thrown 'Procedure 'ddl.get_schema' is not defined'

我创建了用户 space:

s = box.schema.space.create('users')
s:format({                          
         > {name = 'id', type = 'unsigned'},
         > {name = 'user_name', type = 'string'},
         > {name = 'age', type = 'unsigned'}
         > })

我有实体用户:

@Tuple(spaceName = "users")
public class User {

    @Id
    private Long id;

    @Field(name = "user_name")
    private String name;

    private Long age;
}

数据库连接设置:

@Configuration
@EnableTarantoolRepositories(basePackageClasses = UserRepository.class)
public class TarantoolConfiguration extends AbstractTarantoolDataConfiguration {

    @Value("${tarantool.host}")
    protected String host;
    @Value("${tarantool.port}")
    protected int port;
    @Value("${tarantool.username}")
    protected String username;
    @Value("${tarantool.password}")
    protected String password;

    @Override
    protected TarantoolServerAddress tarantoolServerAddress() {
        return new TarantoolServerAddress(host, port);
    }

    @Override
    public TarantoolCredentials tarantoolCredentials() {
        return new SimpleTarantoolCredentials(username, password);
    }

    @Override
    public TarantoolClient tarantoolClient(TarantoolClientConfig tarantoolClientConfig,
                                           TarantoolClusterAddressProvider tarantoolClusterAddressProvider) {
        return new ProxyTarantoolTupleClient(super.tarantoolClient(tarantoolClientConfig, tarantoolClusterAddressProvider));
    }
}

还有一个端点只显示用户列表:

 @GetMapping("/users")
    public List<User> getUsers() {
        return (List<User>) userRepository.findAll();
    }

访问地址http://localhost:8080/users时抛出异常:

ERROR 2203 --- [nio-8080-exec-4] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is io.tarantool.driver.exceptions.TarantoolClientException: Failed to refresh spaces and indexes metadata] with root cause

io.tarantool.driver.exceptions.TarantoolServerException: TarantoolServerException: code=32801, message=Procedure 'ddl.get_schema' is not defined
    at 

可能是什么问题?

cartridge-java 驱动程序需要空间和索引模式来进行验证和其他目的。目前,必要的元数据是在建立连接后立即获取的。由于连接初始化是惰性的,它实际上发生在对 Tarantool 服务器的第一个请求上。

驱动程序允许连接到独立的 Tarantool 副本集和 Tarantool Cartridge 集群。看来您使用的是独立的 Tarantool 实例。在这种情况下,与服务器的所有操作都应直接与驱动程序连接到的实例一起执行。所以,没有必要使用ProxyTarantoolTupleClient,你可以简单地在配置中省略tarantoolClient方法的重载。

有关连接到集群和独立实例的更多信息,请参阅 driver's README. Check out also our Pet Clinic example for Tarantool。