Задавайте вопросы, мы ответим
Вы не зашли.
Недавно переехал на другой сервер и перенес все свои базы. На одном из сайтов с обоями заметил, что с датами какая-то лажа: они изменились и не соответствуют тем, что были ранее. Из-за этого используемая CMS-ка ищет картинки в другом числе, которого на сервере нет. Например если я точно знаю, что загружал определенную картинку 4-го августа, а не 3-го, то здесь на сайте пишет, что дата добавления записи 4 число, но картинка не отображается, потому, что такой папки с этим файлом просто нет. Скорее всего, это проблема с базой данных, которую я перенес. Стал разбираться, но поскольку я не знаю, как именно сформировать поисковый запрос, то ничего подходящего в гугле не нашел. Может ли это несовпадение быть связанным с базой данных или какой-то возникшей ошибкой в ней? Как решить эту проблему? Может, я при переносе что-то не так сделал? С другими базами, которые я переносил с того же сервера, никаких проблем нет.
Текущий сервер БД: MySQL 5.1.66, старый сервер: MySQL 5.5.33-0+wheezy1.
Неактивен
Какой тип колонки с датой. Если TIMESTAMP, то MySQL конвертирует его из хранящегося в UTC значения во временную зону, к которой относится сервер.
Установить временную зону для MySQL можно с помощью переменной time_zone:
http://dev.mysql.com/doc/refman/5.5/en/ … _time_zone
Лучше всего такие колонки хранить в DATETIME, тогда их значение не будет зависеть от зоны.
Неактивен
Как узнать тип колонки? Я так понял, если это DATETIME, то в ней должно быть 10 цифр? Я уже понял, что на правильном пути и что нужно выполнять запросы, но пока не разберусь, какие именно.
Неактивен
Неактивен
Я вижу структуру таблиц в phpmyadmin. Что именно я должен там увидеть? Информация о датах хранится в таблице wscript_wallpapers и, если я правильно понял ман, то это формат TIMESTAMP. На первой записи в колонке date_added стоит дата: 1338846069.
Неактивен
Вот, время хранится в виде числа секунда по гринвичу. Когда делаете SELECT - время превращается в текущий часовой пояс. Скорее всего вы перевезли сервер в другую временную зону и дата для некоторых записей стала другая. Варианты решения:
1) установить на сервере целиком часовой пояс как был раньше;
2) установить переменную time_zone в my.cnf в значение, соответствующее часовому поясу, который был раньше.
Неактивен
Я так понял, что для решения проблемы нужно обращаться к администрации хостинга? Или оба варианта можно сделать самому?
Неактивен
Проще обратиться к администрации. Переменную time_zone можно присваивать в скриптах, но это нужно делать после каждого подключения:
mysql_query("SET time_zone='+2:00'");
Вместо +2:00 указать необходимую таймзону.
Неактивен
Расскажите, как именно должна выглядеть настройка в my.cnf. Администрация хостинга свяжется с системными администраторами и из этого может быть что-то выйдет. Внесенная настройка будет работать только у меня или на всем сервере? Еще я где-то читал про настройки в php.ini. Можете что-нибудь предложить?
Неактивен
Строчка в my.cnf:
time_zone='+2:00'
где вместо 2:00 подставить необходимую таймзону. Эта настройка действует для всего сервера mysql. Как сделать только для ваших скриптов, написано в сообщении #8
Неактивен
Опишите, как должно выглядеть подключение, чтобы это работало правильно. Я не разбираюсь в скриптах, есть файл в php, который подключает к БД. Там внесены имя, пароль, название БД и сервер. Это нужно вносить туда или нет?
Можно ли переконвертировать все записи в колонке под другой формат, например под DATETIME или это невозможно?
Неактивен
Masteron написал:
Опишите, как должно выглядеть подключение, чтобы это работало правильно. Я не разбираюсь в скриптах, есть файл в php, который подключает к БД. Там внесены имя, пароль, название БД и сервер. Это нужно вносить туда или нет?
Очень может быть, даже вроде наверное скорее всего туда. Приведите содержимое скрипта, по крайней мере той части, которая взаимодействует с БД.
Masteron написал:
Можно ли переконвертировать все записи в колонке под другой формат, например под DATETIME или это невозможно?
можно с помощью alter table, но только осторожно, чтобы данные не потерять. А зачем?
Неактивен
Вот содержимое файла settings.php
Неактивен
Это явно не тот файл
define ( 'HOSTNAME', '' );
define ( 'DATABASE', '' );
define ( 'DBUSER', '' );
define ( 'DBPASS', '' );
красноречиво об этом говорит.
Неактивен
найдите место где идет подключение к базе mysql_connect...
и после добавьте строку
mysql_query("SET time_zone='+2:00'");
Неактивен
Если я правильно понял, то должно выглядеть вот так:
Неактивен
После return ничего выполняться не будет, поэтому правильнее так:
Неактивен
После выбора правильной зоны сайт должен заработать нормально, по идее, либо теперь он будет работать по-новому лишь с новыми записями?
Отредактированно Masteron (11.04.2014 15:35:43)
Неактивен
Он должен работать как раньше, если установить таймзону какая была раньше
Неактивен
Ничего не получается, даже не знаю, что делать дальше Перепробовал все известные мне часовые пояса - время остается неизменным. Если я правильно понял, то это должно привести даты в правильный порядок, но при этом ничего не происходит
Неактивен
Вы точно исправили в том месте, где реально происходит подключение? Попробуйте еще установить time_zone прямо в том скрипте, который формирует имя файла
Неактивен
В паке скрипта я один интересный файлик нашел, там есть информация про даты и какие-то преобразования. Может посмотрите: photostalker.net/date_helper.zip
Неактивен
Из этого файла сделать вывод нельзя, так как неизвестно какие функции для чего используются.
Неактивен
Не знаю, имеет ли смысл кидать ссылку на дистрибутив CMS-ки? Там очень много файлов, но вы хотя бы знаете, что искать.
Неактивен
Работу с кодом CMS вряд ли можно сделать через форум. Вам нужен программист, который разберется в этой системе
Неактивен