|
Большая модель (Entity Framework Code First, dotNet) и БД Firebird 3.0
|
|||
---|---|---|---|
#18+
Пробуем использовать подход Code First (Entity Framework 6.2) в связке с СУБД Firebird 3.0. Для небольшой модели (до 10 таблиц) миграции генерируются и выполняются. Проблема возникает при наличии большой модели (в нашем случае 153 таблицы) - в этом случае мы столкнулись с "ограничением на максимальную длину BINARY типа": FirebirdSql.Data.FirebirdClient.FbException (0x80004005): Dynamic SQL Error Dynamic SQL Error SQL error code = -104 String literal with 66866 characters exceeds the maximum length of 65535 characters for the BINARY character set Естественно, что при генерации SQL-запроса и попытке выполнить данный запрос через IBExpert результат аналогичный. Подскажите, есть ли какие-то способы обойти данное ограничение? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2018, 16:55 |
|
Большая модель (Entity Framework Code First, dotNet) и БД Firebird 3.0
|
|||
---|---|---|---|
#18+
buhrstone, Надо бы использовать нормальный тип BLOB SUB_TYPE BYNARY. Пиши автору NET провайдера чтобы подправил его. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2018, 16:59 |
|
Большая модель (Entity Framework Code First, dotNet) и БД Firebird 3.0
|
|||
---|---|---|---|
#18+
Симонов Денис, вроде, именно BLOB SUB_TYPE BYNARY и генерируется. DDL прилагаю: CREATE TABLE "__MigrationHistory" ( "MigrationId" VARCHAR(150) NOT NULL, "ContextKey" VARCHAR(300) NOT NULL, "Model" BLOB SUB_TYPE 0 SEGMENT SIZE 80 NOT NULL, "ProductVersion" VARCHAR(32) NOT NULL ); ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2018, 17:07 |
|
Большая модель (Entity Framework Code First, dotNet) и БД Firebird 3.0
|
|||
---|---|---|---|
#18+
buhrstone, а... понятно. В текст ошибки не вчитался. Эти гады используют строковые литералы вместо параметров. Всё равно пиши автору провайдера, если конечно это возможно поправить на уровне провайдера. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2018, 17:11 |
|
Большая модель (Entity Framework Code First, dotNet) и БД Firebird 3.0
|
|||
---|---|---|---|
#18+
buhrstone...мы столкнулись с "ограничением на максимальную длину BINARY типа": FirebirdSql.Data.FirebirdClient.FbException (0x80004005): Dynamic SQL Error Dynamic SQL Error SQL error code = -104 String literal with 66866 characters exceeds the maximum length of 65535 characters for the BINARY character set Естественно, что при генерации SQL-запроса и попытке выполнить данный запрос через IBExpert результат аналогичный. ... А нельзя ли каким-либо образом посмотреть на сам "проблемный" запрос? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2018, 17:31 |
|
Большая модель (Entity Framework Code First, dotNet) и БД Firebird 3.0
|
|||
---|---|---|---|
#18+
Котовасия, я тебе и без запроса скажу что проблема в длинном строковом литерале ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2018, 17:34 |
|
Большая модель (Entity Framework Code First, dotNet) и БД Firebird 3.0
|
|||
---|---|---|---|
#18+
Симонов Денис, в принципе литерал можно разбить на 2 и объединить их через конкатенацию || ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2018, 17:36 |
|
Большая модель (Entity Framework Code First, dotNet) и БД Firebird 3.0
|
|||
---|---|---|---|
#18+
Симонов ДенисЭти гады используют строковые литералы вместо параметров. А существуют ли ещё сервера где есть ограничения на длину строковых литералов в килобайтах? Может таких нет :) Кстати, все ограничения на длины и вообще константы можно держать в firebird.conf. Например: - MaxQuerySize = 64K -- в PostgreSQL = 1GB - MaxVarcharSizeInBytes = 64K -- в PostgreSQL = 1GB - MaxConnectionCount = 100 -- кол-во одновременных подключений (не знаю есть ли ограничение в коде FB) И сразу всем хорошо. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.05.2018, 09:18 |
|
Большая модель (Entity Framework Code First, dotNet) и БД Firebird 3.0
|
|||
---|---|---|---|
#18+
Hommer, MaxQuerySize в Firebird 3.0 = 10Мб (и то введено искусственно чтобы сервер не накрывался медным тазом когда в него сотню двухгиговых запросов пошлют). Не вижу смысла регулировать в конфиге. Можно конечно сделать как в Pg, вот только зачем. Ты действительно можешь представить себе запрос размером в 1Gb? MaxConnectionCount нет такого ограничения в коде Fb. Но в целом ограничение конечно есть, но оно скорее связано с ограничениями ОС и доступными ресурсами. > А существуют ли ещё сервера где есть ограничения на длину строковых литералов в килобайтах? понятия не имею ибо никогда не передавал в литералах столь длинных значений (по крайней мере сам). З.Ы. Работаю не только с Firebird. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.05.2018, 10:51 |
|
Большая модель (Entity Framework Code First, dotNet) и БД Firebird 3.0
|
|||
---|---|---|---|
#18+
Симонов ДенисMaxQuerySize в Firebird 3.0 = 10Мб (и то введено искусственно чтобы сервер не накрывался медным тазом когда в него сотню двухгиговых запросов пошлют). Не вижу смысла регулировать в конфиге. Можно конечно сделать как в Pg, вот только зачем. Ты действительно можешь представить себе запрос размером в 1Gb? Смысл есть. Тут наверняка у многих есть базы с блобами, размер которых превышает 64K. Чтобы понять что это такое, попробуйте создать табличку с бинарным блобом, потом попробуйте положить туда изображение > 64K. Положить можно в IBExpert. А потом попытайтесь выгрузить запись таблички в скрипт. Получится один большой insert. В этом и есть проблема. Табличка в скрипт выгружается, но скрипт не заработает потому что в FB есть ограничение на длину литералов. Любая таблица должна иметь возможность быть выгруженной в скрипт, в последовательность insert-ов. Согласны? А у нас даже табличку с фотографиями не выгрузить. И ещё есть ограничение на размер запроса. Хотя 10MB и существенно, но не всегда хватает. Когда не хватит, то вместо того чтобы просто поменять параметр MaxQuerySize, придётся что-то изобретать. Я сам через это проходил с длинными триггерами в 2.1. Удовольствие на любителя. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.05.2018, 12:07 |
|
Большая модель (Entity Framework Code First, dotNet) и БД Firebird 3.0
|
|||
---|---|---|---|
#18+
HommerА существуют ли ещё сервера где есть ограничения на длину строковых литералов в килобайтах? Oracle - 4000 байт. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.05.2018, 12:28 |
|
Большая модель (Entity Framework Code First, dotNet) и БД Firebird 3.0
|
|||
---|---|---|---|
#18+
Hommer, ну хорошо. Берём твой любимый Pg. Делаем в нём чудесную табличку и грузим туда 10Гб файлов, каждый файл по одному гигабайту. Делаем экспорт в скрипт а потом восстанавливаем его на другом компе. Готов провести сей эксперимент? 10 Гб ведь совсем немного. Главный вопрос удастся ли тебе провести сию операцию. И если удастся то каким инструментом. Согласен литерал мог бы быть и больше в размерах, но уж точно не 2Гб. HommerИ ещё есть ограничение на размер запроса. Хотя 10MB и существенно, но не всегда хватает. Когда не хватает. Пример в студию > Я сам через это проходил с длинными триггерами в 2.1. Тогда ограничение было в 64K Hommer некоторые ограничения не просто так появляются, а из соображений здравого смысла. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.05.2018, 12:34 |
|
Большая модель (Entity Framework Code First, dotNet) и БД Firebird 3.0
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, какой ужасный сервер!!! Если применить логику Hommer, то им вообще не возможно пользоваться. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.05.2018, 12:37 |
|
Большая модель (Entity Framework Code First, dotNet) и БД Firebird 3.0
|
|||
---|---|---|---|
#18+
Симонов ДенисHommer, ну хорошо. Берём твой любимый Pg. Делаем в нём чудесную табличку и грузим туда 10Гб файлов, каждый файл по одному гигабайту. Делаем экспорт в скрипт а потом восстанавливаем его на другом компе. Готов провести сей эксперимент? 10 Гб ведь совсем немного. Главный вопрос удастся ли тебе провести сию операцию. И если удастся то каким инструментом. У нас с вами что за игра? Я вам говорю что у нас табличку с картинками не выгрузить. А вы мне что? Симонов Денисв принципе литерал можно разбить на 2 и объединить их через конкатенацию || Arithmetic overflow or division by zero has occurred. Concatenation overflow. Resulting string cannot exceed 32765 bytes in length. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.05.2018, 13:41 |
|
Большая модель (Entity Framework Code First, dotNet) и БД Firebird 3.0
|
|||
---|---|---|---|
#18+
Hommer, а если к BLOB конкатенацию сделать то прокатит. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.05.2018, 13:52 |
|
Большая модель (Entity Framework Code First, dotNet) и БД Firebird 3.0
|
|||
---|---|---|---|
#18+
Hommer, > Я вам говорю что у нас табличку с картинками не выгрузить. А я говорю можно, но делать это надо не в строковый литерал ... |
|||
:
Нравится:
Не нравится:
|
|||
09.05.2018, 13:53 |
|
Большая модель (Entity Framework Code First, dotNet) и БД Firebird 3.0
|
|||
---|---|---|---|
#18+
Симонов Дениса если к BLOB конкатенацию сделать то прокатит. Код: sql 1.
Это не то? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.05.2018, 14:07 |
|
Большая модель (Entity Framework Code First, dotNet) и БД Firebird 3.0
|
|||
---|---|---|---|
#18+
Hommer, вот так прокатывает. Только что загрузил картинку в 1 Мб, выгрузил в скрипт и ещё раз загрузил. Главное заставить Firebird думать что он соединяет блобы Код: sql 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.05.2018, 14:15 |
|
Большая модель (Entity Framework Code First, dotNet) и БД Firebird 3.0
|
|||
---|---|---|---|
#18+
Симонов ДенисГлавное заставить Firebird думать что он соединяет блобы Работает. Но до такого ни разработчики драйверов ни те кто делают выгрузку в скрипт, явно не додумались бы. А предлагать им такое как способ решения стремновато. Сразу вопрос возникнет: а нормально разве нельзя сделать? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.05.2018, 14:35 |
|
Большая модель (Entity Framework Code First, dotNet) и БД Firebird 3.0
|
|||
---|---|---|---|
#18+
Hommer, нормально, это когда данные вставляются через параметризованные запросы, а не через скрипты ... |
|||
:
Нравится:
Не нравится:
|
|||
09.05.2018, 14:38 |
|
Большая модель (Entity Framework Code First, dotNet) и БД Firebird 3.0
|
|||
---|---|---|---|
#18+
Сон разума таки рождает чудовищ ... |
|||
:
Нравится:
Не нравится:
|
|||
09.05.2018, 14:42 |
|
Большая модель (Entity Framework Code First, dotNet) и БД Firebird 3.0
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
09.05.2018, 15:47 |
|
Большая модель (Entity Framework Code First, dotNet) и БД Firebird 3.0
|
|||
---|---|---|---|
#18+
HommerХотя 10MB и существенно, но не всегда хватает. если будет реально не хватать - всегда можно подвинуть. Есть вменяемый пример из жизни, без проктологии? Выгрузка больших блобов сюда не относится, ибо там проблема будет с литералами. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.05.2018, 15:49 |
|
Большая модель (Entity Framework Code First, dotNet) и БД Firebird 3.0
|
|||
---|---|---|---|
#18+
HommerСимонов ДенисMaxQuerySize в Firebird 3.0 = 10Мб (и то введено искусственно чтобы сервер не накрывался медным тазом когда в него сотню двухгиговых запросов пошлют). Не вижу смысла регулировать в конфиге. Можно конечно сделать как в Pg, вот только зачем. Ты действительно можешь представить себе запрос размером в 1Gb? Смысл есть. Тут наверняка у многих есть базы с блобами, размер которых превышает 64K. Чтобы понять что это такое, попробуйте создать табличку с бинарным блобом, потом попробуйте положить туда изображение > 64K. Положить можно в IBExpert. А потом попытайтесь выгрузить запись таблички в скрипт. Получится один большой insert. В этом и есть проблема. Табличка в скрипт выгружается, но скрипт не заработает потому что в FB есть ограничение на длину литералов. Любая таблица должна иметь возможность быть выгруженной в скрипт, в последовательность insert-ов. Согласны? А у нас даже табличку с фотографиями не выгрузить. ... Здравствуйте, товарищ Хоммер! Задача выгрузки данных с большими блобами в скрипт решается очень просто, средствами ИБЭксперт. Есть такой режим, когда блобы выгружаются в отдельные файлы. И, соответственно, загружаются в базу обратно. Имхо, весьма удобно, ибо не требуется впихивать в текст скрипта нетекстовые данные, да и вообще - скрипт становится "обозреваемым". Используем либо ИБЕксперт, либо поставляемую с ним в комплекте длл (не вижу отсюда ее названия, что-то "...скрипт...длл". ... |
|||
:
Нравится:
Не нравится:
|
|||
09.05.2018, 15:53 |
|
Большая модель (Entity Framework Code First, dotNet) и БД Firebird 3.0
|
|||
---|---|---|---|
#18+
Симонов Дениспосмотри что ты наделал 21397964 и ещё меня соучастником сделал IBE давно умеет импорт\экспорт блобов через скрипты ... |
|||
:
Нравится:
Не нравится:
|
|||
09.05.2018, 15:54 |
|
|
start [/forum/topic.php?fid=40&startmsg=39642130&tid=1561099]: |
0ms |
get settings: |
10ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
64ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
others: | 304ms |
total: | 465ms |
0 / 0 |