Задавайте вопросы, мы ответим
Вы не зашли.
Страниц: 1
Тема закрыта
Поясню подробней.
Импортирую самописный скрипт в БД. Скрипт содержит 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)
Неактивен
А как Вы загружаете сценарий в консоли? Длина строки консоли windows
гораздо короче, чем длина строки консоли linux. Может быть, Вы просто
упираетесь в это ограничение?
Большее количество памяти не должно портить картины. Судя по тексту
ошибки — что-то обрезается в процессе работы. Сравните структуры таблиц,
особенно в части ширины соответствующих столбцов.
Неактивен
Длина консольной стоки - не проблема, там стандартный mysql -uuser... < ./file
Но проблему решил. Все оказалось,как всегда, просто
В процедуре мне надо было на лету генерировать содержимое ячейки из нескольких строк, которые я, будучи с неработющей головой, по привычке и сделал через 'asd'+'asd'
Мускуль мне все это дело просуммировал, и записывал 0-ли в соответствующую ячейку. Правда я так и не понял, почему на винде этот код выдал ошибку в итоге.
Заменил + на concat - все запустилось.
Спасибо
Неактивен
Тема закрыта
Страниц: 1