Datajoint 自动填充使函数错误:DataJointError:关系必须具有自动填充的主要依赖项才能工作

问题描述

我收到以下错误

“DataJointError:关系必须具有主要依赖项才能自动填充工作” 我认为这是一个非常基本的开始,首先定义一个手动表格,然后定义一个导入表格。

在这种情况下,我们有一个文件夹中的 matlab 文件名手动表。然后,我们希望使用这些文件中的数据自动填充导入的表。所以这些表之间的依赖关系应该是一对一的。但是,我们在尝试填充时遇到以下错误,如下所示:DataJointError:关系必须具有主要依赖项,自动填充才能在尝试实现 make 函数时起作用。

上游会话表有主键“文件名”,我们希望导入的表定义如下:

@schema
class Trials(dj.Imported):
    deFinition = """
    trial : int
    -> Session
    ---
    type = null : int
    outcome = null : int
    """

    def make(self,key):  # key is the primary key of one of the entries in the table `Scan`
        name = ((Session & key).fetch1()['filename'])
        print(name)
    
Trials.populate()

我已尝试关闭 jupyter notebook 并重新打开、重新启动内核等。在此先感谢您的帮助!

解决方法

此问题已在 https://github.com/datajoint/datajoint-python/issues/902 中报告并将很快得到解决。这是因为依赖项在填充之前没有加载到内存中。中间修复是在调用 populate 之前绘制架构图 - 这将加载依赖项并使 populate 正常工作。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...