Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

Cannot do foreign key renaming for multiple fields coming from different original parent table in 3.4.1

オープン
#347 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
35/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
停滞
技術スタック
mariadb, matlab
領域
databases

調査の方向性

MATLAB 2020a で A、B、C、D の宣言シーケンスを再現し、その後、304 行目の dj.internal.Declare.makeFK と、152 行目の dj.internal.Declare.declare にあるその呼び出し元を調べます。失敗する複数の親をまたぐ名前変更と、動作する単一の親の場合を比較します。完了条件は、D がマッピングされたフィールドの不一致エラーなしに、名前を変更した両方の外部キー フィールドを宣言できることです。

索引モデルが issue の本文から書いたものです。

説明

bug

Cannot declare a table with foreign key renaming for multiple fields

Reproducibility

Include:

  • OS MACOS
  • MATLAB Version 2020a
  • MySQL version 10.4.13-MariaDB Homebrew
  • MySQL Deployment Strategy local-native
  • DataJoint Version 3.4.1
  • Minimum number of steps to reliably reproduce the issue:
%{
pk_a:  varchar(12)
%}

classdef A < dj.Manual
end
%{
pk_b : varchar(12)
%}

classdef B < dj.Manual
end
%{
-> subject.A
-> subject.B
%}

classdef C < dj.Manual
end
%{
(pk_da, pk_db) -> subject.C
%}

classdef D < dj.Manual
end
  • Complete error stack as a result of evaluating the above steps
    When declaring D, I got the following error:
>> subject.D

ans = 


Object subject.D

Error using dj.internal.Declare.makeFK (line 304)
Mapped fields (pk_da,pk_db) and () must match in the foreign key.

Error in dj.internal.Declare.declare (line 152)
                            dj.internal.Declare.makeFK( ...

Error in dj.internal.Table/create (line 624)
            [sql, external_stores] = dj.internal.Declare.declare(self, def);

Error in dj.internal.Table/get.plainTableName (line 116)
                self.create

Error in dj.internal.Table/get.tableHeader (line 83)
                self.tableHeader = self.schema.headers(self.plainTableName);

Error in dj.internal.GeneralRelvar/compile (line 676)
                    header = derive(tab.tableHeader);

Error in dj.internal.GeneralRelvar/get.header (line 43)
            header = self.compile;

Error in dj.internal.GeneralRelvar/disp (line 73)
            hdr = self.header;

If I do

%{
pk1: varchar(12)
pk2: varchar(12)
%}

classdef A < dj.Manual
end
%{
(f1, f2) -> subject.A(pk1, pk2)
%}
classdef B < dj.Manual
end

It worked.

主要言語
MATLAB
スター
41
フォーク
42
PR マージ指標
30日以内にマージされた PR はありません

環境構築

このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

datajoint/datajoint-matlab のほかの issue

datajoint/datajoint-matlab の issue をすべて見る

似ている issue

MATLAB の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。