Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Падает сохранение объекта со вложенными таблицами, при использовании автоинкремента (SQLite) #43

Open
dvakor opened this issue Oct 4, 2019 · 11 comments

Comments

@dvakor
Copy link
Contributor

dvakor commented Oct 4, 2019

При использовании автоинкремента в идентификаторах и ПодчиненнаяТаблица, сохранение "главной" сущности выкидывает исключение Внешнее исключение (Microsoft.Data.Sqlite.SqliteException): SQLite Error 19: 'FOREIGN KEY constraint failed'.

Пример кода:

//Файл Источник.os
&ПодчиненнаяТаблица(Тип = "Массив", ТипЭлемента = "ОписаниеПараметра")
Перем Параметры Экспорт;
МенеджерСущностей.ДобавитьКлассВМодель(Тип("ОписаниеПараметра"));
МенеджерСущностей.ДобавитьКлассВМодель(Тип("ОписаниеИсточника"));
МенеджерСущностей.Инициализировать();

Параметр = Параметры.Создать();
Параметр.Имя = "Тест";
Параметр.Значение = "фывыфв";
Параметр.Сохранить();

Источник = Источники.Создать();
Источник.Наименование = "Тест";
Источник.Тип = "Файл";
Источник.Параметры.Добавить(Параметр);
Источник.Сохранить();
@nixel2007
Copy link
Owner

Можно взглянуть на объявление класса "ОписаниеПараметра"?

@dvakor
Copy link
Contributor Author

dvakor commented Oct 4, 2019

Можно взглянуть на объявление класса "ОписаниеПараметра"?

&Идентификатор
&ГенерируемоеЗначение
&Колонка(Тип = "Целое")
Перем Идентификатор Экспорт;

&Колонка(Тип = "Строка")
Перем Имя Экспорт;

&Колонка(Тип = "Строка")
Перем Значение Экспорт;

@nixel2007
Copy link
Owner

develop-ветка? можешь включить вывод лога oscript.lib.entity.connector.sqlite в DEBUG?

@dvakor
Copy link
Contributor Author

dvakor commented Oct 4, 2019

https://pastebin.com/VGERrfvk

ветка и девелоп и @otymko которая с ПГ

@dvakor
Copy link
Contributor Author

dvakor commented Oct 4, 2019

Еще трабл с удалением.
Я кстати заметил, что не удаляется записи в таблице связей, в моей примере это ОписаниеИсточника_Параметры, сделал так

Сущность.Параметры.Очистить();
Сущность.Записать();
Сущность.Удалить();

так работает кароч) Вопрос тогда в том баг или фича это?

@nixel2007
Copy link
Owner

Включи еще лог oscript.lib.entity.manager, пожалуйста.

@dvakor
Copy link
Contributor Author

dvakor commented Oct 4, 2019

https://pastebin.com/27uVSimT чет он мало логирует совсем :(

@geolone
Copy link

geolone commented Jun 22, 2022

Такое же исключение возникает и при использовании ссылок при записи "главной" сущности, недавно мы обсуждали это в телеграмме https://t.me/oscript_library/61236. Увидел похожий ишуз не стал заводить новый. Пока решил вопрос так:

Исправил функцию:

Функция ИДПоследнейДобавленнойЗаписи(Соединение, Запрос) Экспорт

на:

Функция ИДПоследнейДобавленнойЗаписи(Соединение, Запрос) Экспорт
    Запрос = НовыйЗапрос(Соединение);
    Запрос.Текст = "SELECT last_insert_rowid();";
    Результат = Запрос.Выполнить().Выгрузить();
    Возврат Результат[0].Получить(0);
КонецФункции

@nixel2007
Copy link
Owner

Вообще это выглядит как вполне валидный фикс изначально невалидной обработки результата запроса... Правильно понимаю, что этот фикс чинит обе проблемы?

@geolone
Copy link

geolone commented Jun 22, 2022

Я кроме окружения oscript.web не пробовал.

@nixel2007
Copy link
Owner

А этот коннектор как раз специализирован для ос.веба

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants