Здравствуйте! Недавно столкнулся с такой проблемой, писал модуль который вносил в БД определённые данные, всё отладил на локальной машине, перенёс на сервер….. Дак вот на сервере модуль не работал, а именно не вносил в БД новые записи и даже сообщений об ошибке не было… покопавшись, разобрался, ошибка была здесь:
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 попыток...
Может и существуют, но мы о них не знаем, т.к. не пытаемся в своих запросах устанавливать значения автоинкрементных полей...
Я хочу заметить, что вы концептуально неверно подходите к разработке модулей, и я не удивлюсь если ваш модуль не будет работать с PostgreSQL или с Oracle. У вас вообще не должно быть повода исполнять такие простые запросы с помощью SQL, т.к. Мудл имеет мощнейшую библиотеку для работы с БД (/lib/dmllib.php).
Разрабатывая что-то ориентируйтесь на старндатные модули - это очень хорошая школа!
А вообще, косяки в каждой десятой попытке - это повод сильно задуматься и хорошенько прочесать логи Апача и Мускула. Проблема явно с вашим сервером, т.к. подобные неприятности 100% были бы замечены народом, поскольку ежедневно в мире с помощью тестов Мудл, думаю, совершается не менее 1000 попыток...
В ответ на Макс Сопин
Re: Moodle и нестандартные настройки сервера. Возможные проблемы.
от Виталий Лавров -
Ну дык id не указывайте, оно самое его вставит как нужно.
INSERT INTO `error_mon` ( `attempt` , `time` , `text_post` ) VALUES ('34561', '1111111', 'my text');
PS а нафига все имена в обратных кавычках ?
INSERT INTO `error_mon` ( `attempt` , `time` , `text_post` ) VALUES ('34561', '1111111', 'my text');
PS а нафига все имена в обратных кавычках ?
В ответ на Виталий Лавров
Re: Moodle и нестандартные настройки сервера. Возможные проблемы.
от Макс Сопин -
Вы совершенно не так поняли, данным примером я хотел показать, что один и тот же запрос на одном серваке может выполниться без проблем, на другом - нет.... И тут без разницы сам ты пишешь запрос или используешь библиотеки мудла.... Обратными кавычками ты явно указываешь SQLю что это имена таблиц или полей, вещ не обязательная, но phpMyAdmin(я в нем писал запрос, кстати именно он присваивал пустоту автоинкрементному полю вероятно опираясь на настройки сервера) всегда их ставит.
А на счёт логов, надо попробывать.))))))))
А на счёт логов, надо попробывать.))))))))
В ответ на Макс Сопин
Re: Moodle и нестандартные настройки сервера. Возможные проблемы.
от Виталий Лавров -
Если ошибка происходит регулярно, то ее можно запротоколировать
Логи это наше все!
А на счет пустых кавычек для автоинкрементного поля - за такое нужно отрывать разработчикам все выступающие части тела!
Логи это наше все!
А на счет пустых кавычек для автоинкрементного поля - за такое нужно отрывать разработчикам все выступающие части тела!
В ответ на Макс Сопин
Re: Moodle и нестандартные настройки сервера. Возможные проблемы.
от Dmitry Pupinin -
>И тут без разницы сам ты пишешь запрос или используешь библиотеки мудла
Неправда ваша. Библиотечная функция либо скажет об ошибке, либо проигнорирует то, что ненужно.
А вы уверены что это настройки сервера? Может phpMyAdmin просто проигнорировал вашу "пустоту", видя, что вы пытаетесь запихнуть ее в автоинкрементное поле?...
Попробуйте выполнить этот запрос из командной строки.
Неправда ваша. Библиотечная функция либо скажет об ошибке, либо проигнорирует то, что ненужно.
А вы уверены что это настройки сервера? Может phpMyAdmin просто проигнорировал вашу "пустоту", видя, что вы пытаетесь запихнуть ее в автоинкрементное поле?...
Попробуйте выполнить этот запрос из командной строки.
В ответ на Dmitry Pupinin
Re: Moodle и нестандартные настройки сервера. Возможные проблемы.
от Vadim Dvorovenko -
А есть ли уверенность в том, что сервер и не сервер настроены абсолютно одинаково - везде ли совпадают версии mysql и moodle?
Кроме того, хочется заметить, что за невозможность вставить то или иное значение обычно отвечают индексы. Кроме того, проверьте, допускает ли поле id вставку null в обоих случаях. В ряде баз данных есть такая несуразность - в поле без повторов можно вставить и null, но только один раз, после этого на индексе срабатывает повтор и он не даёт вставлять null дальше - возможно в той базе, где вылетала ошибка как раз уже был вставлен null.
Опять же, некоторые базы данных различают пустую строку и null, а некоторые нет.
Таких подводных камней море, но вам не нужно о них знать - чтобы не напороться на них, нужно использовать только библиотечные функции.
Кроме того, хочется заметить, что за невозможность вставить то или иное значение обычно отвечают индексы. Кроме того, проверьте, допускает ли поле id вставку null в обоих случаях. В ряде баз данных есть такая несуразность - в поле без повторов можно вставить и null, но только один раз, после этого на индексе срабатывает повтор и он не даёт вставлять null дальше - возможно в той базе, где вылетала ошибка как раз уже был вставлен null.
Опять же, некоторые базы данных различают пустую строку и null, а некоторые нет.
Таких подводных камней море, но вам не нужно о них знать - чтобы не напороться на них, нужно использовать только библиотечные функции.
В ответ на Dmitry Pupinin
Re: Moodle и нестандартные настройки сервера. Возможные проблемы.
от Макс Сопин -
100% дело в сервере, у нас в универе свой сервак на котором ещё размещён основной сайт, этот сайт делает один из проректоров (мой начальник) и так его настраивает чтобы хорошо работал основной сайт. А как можно посмотреть логи мускула?