Вот что происходит:
Столбец, используемый в качестве родительского ключа, должен быть либо первичным ключом родительской таблицы, либо иметь уникальный индекс / ограничение для него. Таблица sqlite_master
не имеет такой вещи для столбца имени (и вы не можете добавить к ней индекс), поэтому ее нельзя использовать. Я не уверен, почему вы получаете ошибку logi c при создании таблицы вместо ошибки несоответствия внешнего ключа во время вставки, как вы делаете в той же ситуации с обычными таблицами, хотя:
sqlite> pragma foreign_keys = on;
sqlite> create table parent(id integer primary key, name text not null);
sqlite> insert into parent(name) values ('Bob');
sqlite> create table child(id integer primary key, name text references parent(name));
sqlite> insert into child(name) values ('Bob');
Error: foreign key mismatch - "child" referencing "parent"
sqlite> create unique index parent_idx_name on parent(name);
sqlite> insert into child(name) values ('Bob');
sqlite>
Если принудительное применение внешнего ключа отключено, как по умолчанию, то, что вы пытаетесь, будет принято, оно просто ничего не сделает и вызовет ошибки, если вы позже включите FK и попытаетесь что-то сделать с таблицей.