Moodle и нестандартные настройки сервера. Возможные проблемы.

Moodle и нестандартные настройки сервера. Возможные проблемы.

от Макс Сопин -
Количество ответов: 7
Здравствуйте! Недавно столкнулся с такой проблемой, писал модуль который вносил в БД определённые данные, всё отладил на локальной машине, перенёс на сервер….. Дак вот на сервере модуль не работал, а именно не вносил в БД новые записи и даже сообщений об ошибке не было… покопавшись, разобрался, ошибка была здесь:

INSERT INTO `error_mon` ( `id` , `attempt` , `time` , `text_post` ) VALUES ('', '34561', '1111111', 'my text');

Поле `id` - автоинкрементное и сервер писал мол «не могу внести в автоинкрементное поле пустоту» (это я считал из mysql_error()) , а локальные сервер без проблем выполнил запрос. Правильные вариант для удаленного сервера был: INSERT INTO `error_mon` ( `attempt` , `time` , `text_post` ) VALUES ('34561', '1111111', 'my text');.

Существуют ли в Moodle такие подводные камни? К чему это спросил, у меня в тестах ответы не всегда сохраняются (примерно одна попытка из 10 и теряются не все ответы, а только часть), причем дело не в сбоях с нэтом, для проверки сохраняю массив POST в файл, что бы в тех попытках которые был сбой можно было восстановить ответы (оценку).
В ответ на Макс Сопин

Re: Moodle и нестандартные настройки сервера. Возможные проблемы.

от Dmitry Pupinin -
>Существуют ли в Moodle такие подводные камни?

Может и существуют, но мы о них не знаем, т.к. не пытаемся в своих запросах устанавливать значения автоинкрементных полей... подмигиваю

Я хочу заметить, что вы концептуально неверно подходите к разработке модулей, и я не удивлюсь если ваш модуль не будет работать с PostgreSQL или с Oracle. У вас вообще не должно быть повода исполнять такие простые запросы с помощью SQL, т.к. Мудл имеет мощнейшую библиотеку для работы с БД (/lib/dmllib.php).
Разрабатывая что-то ориентируйтесь на старндатные модули - это очень хорошая школа!

А вообще, косяки в каждой десятой попытке - это повод сильно задуматься и хорошенько прочесать логи Апача и Мускула. Проблема явно с вашим сервером, т.к. подобные неприятности 100% были бы замечены народом, поскольку ежедневно в мире с помощью тестов Мудл, думаю, совершается не менее 1000 попыток...
В ответ на Макс Сопин

Re: Moodle и нестандартные настройки сервера. Возможные проблемы.

от Виталий Лавров -
Изображение пользователя Эксперт по Moodle
Ну дык id не указывайте, оно самое его вставит как нужно.

INSERT INTO `error_mon` ( `attempt` , `time` , `text_post` ) VALUES ('34561', '1111111', 'my text');

PS а нафига все имена в обратных кавычках ?
В ответ на Виталий Лавров

Re: Moodle и нестандартные настройки сервера. Возможные проблемы.

от Макс Сопин -
Вы совершенно не так поняли, данным примером я хотел показать, что один и тот же запрос на одном серваке может выполниться без проблем, на другом - нет.... И тут без разницы сам ты пишешь запрос или используешь библиотеки мудла.... Обратными кавычками ты явно указываешь SQLю что это имена таблиц или полей, вещ не обязательная, но phpMyAdmin(я в нем писал запрос, кстати именно он присваивал пустоту автоинкрементному полю вероятно опираясь на настройки сервера) всегда их ставит.

А на счёт логов, надо попробывать.))))))))
В ответ на Макс Сопин

Re: Moodle и нестандартные настройки сервера. Возможные проблемы.

от Виталий Лавров -
Изображение пользователя Эксперт по Moodle
Если ошибка происходит регулярно, то ее можно запротоколировать улыбаюсь
Логи это наше все!

А на счет пустых кавычек для автоинкрементного поля - за такое нужно отрывать разработчикам все выступающие части тела!

В ответ на Макс Сопин

Re: Moodle и нестандартные настройки сервера. Возможные проблемы.

от Dmitry Pupinin -
>И тут без разницы сам ты пишешь запрос или используешь библиотеки мудла

Неправда ваша. Библиотечная функция либо скажет об ошибке, либо проигнорирует то, что ненужно.

А вы уверены что это настройки сервера? Может phpMyAdmin просто проигнорировал вашу "пустоту", видя, что вы пытаетесь запихнуть ее в автоинкрементное поле?...
Попробуйте выполнить этот запрос из командной строки.
В ответ на Dmitry Pupinin

Re: Moodle и нестандартные настройки сервера. Возможные проблемы.

от Vadim Dvorovenko -
Изображение пользователя Developers Изображение пользователя Майнтейнер перевода
А есть ли уверенность в том, что сервер и не сервер настроены абсолютно одинаково - везде ли совпадают версии mysql и moodle?
Кроме того, хочется заметить, что за невозможность вставить то или иное значение обычно отвечают индексы. Кроме того, проверьте, допускает ли поле id вставку null в обоих случаях. В ряде баз данных есть такая несуразность - в поле без повторов можно вставить и null, но только один раз, после этого на индексе срабатывает повтор и он не даёт вставлять null дальше - возможно в той базе, где вылетала ошибка как раз уже был вставлен null.
Опять же, некоторые базы данных различают пустую строку и null, а некоторые нет.
Таких подводных камней море, но вам не нужно о них знать - чтобы не напороться на них, нужно использовать только библиотечные функции.
В ответ на Dmitry Pupinin

Re: Moodle и нестандартные настройки сервера. Возможные проблемы.

от Макс Сопин -
100% дело в сервере, у нас в универе свой сервак на котором ещё размещён основной сайт, этот сайт делает один из проректоров (мой начальник) и так его настраивает чтобы хорошо работал основной сайт. А как можно посмотреть логи мускула?