SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 12.09.2011 18:33:41

YAAP
Завсегдатай
Зарегистрирован: 17.02.2010
Сообщений: 31

innodb_buffer_pool_size - может ли стать причиной ошибки при импорте базы?

Поясню подробней.
Импортирую самописный скрипт в БД. Скрипт содержит 1 процедуру (аля touchProduct), которая проверяет зависимости и наличие продукта по уникальному коду.
Если такой продукт есть - возвращает его ИД, если нет - создает и возвращает ИД. Дальше - просто вызов этой процедуры для списка продуктов (SET @ProductId = touchProduct ('Acer','LX.SBB02.073', '');

Скрипт получился достаточно большой (~40мб)
Импортировал этот скрипт через консоль в Убунте (mysql  Ver 14.14 Distrib 5.1.41, for debian-linux-gnu (i486) using readline 6.1), долго, но все замечательно прокатило.
При этом, если во время выполнения скрипта посмотреть список процессов и\или показать количество товаров в базе, то можно увидеть и запросы со скрипта и постоянно меняющееся количество товаров (т.е. скрипт отрабатывает и постепенно заполняет базу товаров)

Далее необходимо залить этот же скрипт под виндой (вин сервер 2008, mysql Ver 14.14 Distrib 5.5.11, for Win64 (x86))
И тут начались проблемы
1) Скрипт так же долго отрабатывает, но потом отваливается с ошибкой ("mysql error 1292 truncated incorrect double value ..")
2) В списке процессов запросы со скрипта все так же видны, т.е. скрипт работает, а вот результатов нет, таблица с товарами не меняется
3) Пробовал через пхпадмин заливать укороченную версию скрипта с несоколькими товарами - замечательно заливается

Разница между 2-ся серверами (в конфиге) в том, что на винде innodb_buffer_pool_size=575М, а в убунте 8, но уменьшение этого параметра никак не влияет на результат.


О буферизации идея появилась тогда исходя из пункта 2)

В какую сторону гуглить, что посмотреть?

зы: ставил при импорте параметр --unbuffered - не помог
зыы: тот же скрипт, но для 1-го продукта - без проблем импортируется через командную строку - только что проверил
зыыы: заливать скрипт частями - не очень хочется. а) Скрипт таки большой - много частей получится, б) Скрипт зависим (нельзя просто поделить по 300 строк, SET @ProductId потом используется для следующих запросов

Отредактированно YAAP (12.09.2011 18:37:20)

Неактивен

 

#2 13.09.2011 10:38:16

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: innodb_buffer_pool_size - может ли стать причиной ошибки при импорте базы?

А как Вы загружаете сценарий в консоли? Длина строки консоли windows
гораздо короче, чем длина строки консоли linux. Может быть, Вы просто
упираетесь в это ограничение?

Большее количество памяти не должно портить картины. Судя по тексту
ошибки — что-то обрезается в процессе работы. Сравните структуры таблиц,
особенно в части ширины соответствующих столбцов.

Неактивен

 

#3 14.09.2011 13:01:58

YAAP
Завсегдатай
Зарегистрирован: 17.02.2010
Сообщений: 31

Re: innodb_buffer_pool_size - может ли стать причиной ошибки при импорте базы?

Длина консольной стоки - не проблема, там стандартный mysql -uuser... < ./file
Но проблему решил. Все оказалось,как всегда, просто
В процедуре мне надо было на лету генерировать содержимое ячейки из нескольких строк, которые я, будучи с неработющей головой, по привычке и сделал через 'asd'+'asd'
Мускуль мне все это дело просуммировал, и записывал 0-ли в соответствующую ячейку. Правда я так и не понял, почему на винде этот код выдал ошибку в итоге.

Заменил + на concat -  все запустилось.
Спасибо

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson