21 июля 2020

dbForge Studio. Обходим ошибку "Index was outside the bounds of the array"

    Для работы с базами данных SQL Server я использую dbForge Studio for SQL Server. Главное ее преимущество над конкурентами - это наличие черного скина. Шутка. Я выбрал dbForge Studio, так как она по функциональным возможностям и удобству работы лучше других IDE для SQL Server. Одной из ее функций, которыми я пользуюсь, является "Data Generator" - генератор тестовых данных. Вкратце, хочу отметить, что "Data Generator" из dbForge Studio намного более мощный и гибкий, чем многие специализированные утилиты для генерации тестовых данных. Сегодня случилось страшное - мой проект по генерации тестовых данных сломался.
    Открываю утром проект в "Data Generator" и вижу, что многие его таблицы отмечены красным значком ошибки. В этих таблицах все поля, для генерации которых используется скрипт на Python с импортированным модулем "random", помечены ошибкой "Index was outside the bounds of the array".
При этом, во время загрузки проекта на панели предварительного просмотра на несколько секунд появляется сообщение "An error occurred while creating Devart.DbForge.DataGeneration.SqIServer.Generators.Base.SqIPythonGenerator generator".
    Первые попытки найти причину ошибки успехом не увенчались. Переустановка dbForge Studio с чисткой реестра тоже не помогла. Так как в этом проекте больше ста таблиц и для большинства из них уже настроены правила генерации полей я продолжил поиски. И спасительное решение было найдено:
  1. перезапускаем dbForge Studio;
  2. создаем новый проект "Data Generation";
  3. включаем в проект любую таблицу;
  4. у выбранной таблицы для любого поля указываем генератор "Python";
  5. в скрипте импортируем модуль "random";
  6. открываем старый проект.
Получается, что подобные манипуляции с созданием нового проекта инициализируют "Python Generator" и сломавшийся проект загружается корректно. Вот такие "танцы с бубном"...

P.S. dbForge Studio for SQL Server v5.8.127 (текущая версия).

2 комментария:

  1. Генератор у них фуфло. Иногда даже в ни с чем не связанные таблицы генерирует 0-100 записей вместо 100 000 или 1 000 000. Так и не нашел закономерности.

    ОтветитьУдалить
  2. Python-генератор у них глючный и без рандома. Открываешь проект, а там ошибка "нет поля BuildDate" в строке "return BuildDate.AddDays(1)". Оставляешь "return BuildDate" - работает. Снова добавляешь AddDays(1), и исходная строка "return BuildDate.AddDays(1)" - работает.

    ОтветитьУдалить