SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 05.04.2014 23:50:12

Masteron
Участник
Зарегистрирован: 05.04.2014
Сообщений: 14

Проблема с датами

Недавно переехал на другой сервер и перенес все свои базы. На одном из сайтов с обоями заметил, что с датами какая-то лажа: они изменились и не соответствуют тем, что были ранее. Из-за этого используемая CMS-ка ищет картинки в другом числе, которого на сервере нет. Например если я точно знаю, что загружал определенную картинку 4-го августа, а не 3-го, то здесь на сайте пишет, что дата добавления записи 4 число, но картинка не отображается, потому, что такой папки с этим файлом просто нет. Скорее всего, это проблема с базой данных, которую я перенес. Стал разбираться, но поскольку я не знаю, как именно сформировать поисковый запрос, то ничего подходящего в гугле не нашел. Может ли это несовпадение быть связанным с базой данных или какой-то возникшей ошибкой в ней? Как решить эту проблему? Может, я при переносе что-то не так сделал? С другими базами, которые я переносил с того же сервера, никаких проблем нет.

Текущий сервер БД: MySQL 5.1.66, старый сервер: MySQL 5.5.33-0+wheezy1.

Неактивен

 

#2 06.04.2014 02:25:59

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Проблема с датами

Какой тип колонки с датой. Если TIMESTAMP, то MySQL конвертирует его из хранящегося в UTC значения во временную зону, к которой относится сервер.

Установить временную зону для MySQL можно с помощью переменной time_zone:
http://dev.mysql.com/doc/refman/5.5/en/ … _time_zone

Лучше всего такие колонки хранить в DATETIME, тогда их значение не будет зависеть от зоны.

Неактивен

 

#3 06.04.2014 03:19:51

Masteron
Участник
Зарегистрирован: 05.04.2014
Сообщений: 14

Re: Проблема с датами

Как узнать тип колонки? Я так понял, если это DATETIME, то в ней должно быть 10 цифр? Я уже понял, что на правильном пути и что нужно выполнять запросы, но пока не разберусь, какие именно.

Неактивен

 

#4 06.04.2014 03:25:55

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Проблема с датами

SHOW CREATE TABLE имя_таблицы;


Если это удобно, то можете посмотреть структуру таблиц в phpmyadmin.

Неактивен

 

#5 06.04.2014 14:06:37

Masteron
Участник
Зарегистрирован: 05.04.2014
Сообщений: 14

Re: Проблема с датами

Я вижу структуру таблиц в phpmyadmin. Что именно я должен там увидеть? Информация о датах хранится в таблице wscript_wallpapers и, если я правильно понял ман, то это формат TIMESTAMP. На первой записи в колонке date_added стоит дата: 1338846069.

Неактивен

 

#6 06.04.2014 14:28:03

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Проблема с датами

Вот, время хранится в виде числа секунда по гринвичу. Когда делаете SELECT - время превращается в текущий часовой пояс. Скорее всего вы перевезли сервер в другую временную зону и дата для некоторых записей стала другая. Варианты решения:
1) установить на сервере целиком часовой пояс как был раньше;
2) установить переменную time_zone в my.cnf в значение, соответствующее часовому поясу, который был раньше.

Неактивен

 

#7 06.04.2014 20:47:23

Masteron
Участник
Зарегистрирован: 05.04.2014
Сообщений: 14

Re: Проблема с датами

Я так понял, что для решения проблемы нужно обращаться к администрации хостинга? Или оба варианта можно сделать самому?

Неактивен

 

#8 06.04.2014 21:32:04

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Проблема с датами

Проще обратиться к администрации. Переменную time_zone можно присваивать в скриптах, но это нужно делать после каждого подключения:
mysql_query("SET time_zone='+2:00'");

Вместо +2:00 указать необходимую таймзону.

Неактивен

 

#9 07.04.2014 17:44:58

Masteron
Участник
Зарегистрирован: 05.04.2014
Сообщений: 14

Re: Проблема с датами

Расскажите, как именно должна выглядеть настройка в my.cnf. Администрация хостинга свяжется с системными администраторами и из этого может быть что-то выйдет. Внесенная настройка будет работать только у меня или на всем сервере? Еще я где-то читал про настройки в php.ini. Можете что-нибудь предложить?

Неактивен

 

#10 07.04.2014 17:47:47

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Проблема с датами

Строчка в my.cnf:
time_zone='+2:00'

где вместо 2:00 подставить необходимую таймзону. Эта настройка действует для всего сервера mysql. Как сделать только для ваших скриптов, написано в сообщении #8

Неактивен

 

#11 08.04.2014 18:39:29

Masteron
Участник
Зарегистрирован: 05.04.2014
Сообщений: 14

Re: Проблема с датами

Опишите, как должно выглядеть подключение, чтобы это работало правильно. Я не разбираюсь в скриптах, есть файл в php, который подключает к БД. Там внесены имя, пароль, название БД и сервер. Это нужно вносить туда или нет?

Можно ли переконвертировать все записи в колонке под другой формат, например под DATETIME или это невозможно?

Неактивен

 

#12 08.04.2014 23:26:37

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Проблема с датами

Masteron написал:

Опишите, как должно выглядеть подключение, чтобы это работало правильно. Я не разбираюсь в скриптах, есть файл в php, который подключает к БД. Там внесены имя, пароль, название БД и сервер. Это нужно вносить туда или нет?

Очень может быть, даже вроде наверное скорее всего туда. Приведите содержимое скрипта, по крайней мере той части, которая взаимодействует с БД.

Masteron написал:

Можно ли переконвертировать все записи в колонке под другой формат, например под DATETIME или это невозможно?

можно с помощью alter table, но только осторожно, чтобы данные не потерять. А зачем?


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#13 09.04.2014 10:11:44

Masteron
Участник
Зарегистрирован: 05.04.2014
Сообщений: 14

Re: Проблема с датами

Вот содержимое файла settings.php

<?php

    define ( 'HOSTNAME', '' );
    define ( 'DATABASE', '' );
    define ( 'DBUSER', '' );
    define ( 'DBPASS', '' );
    define ( 'DBPREFIX', 'wscript_' );
    define ( 'DEFAULT_USERNAME', '' );
    define ( 'DEFAULT_PASSWORD', '' );
    define ( 'SECURITY_KEY', 'dbb90d4a75426be264dffaec100a36f4' );
    define ( 'APPLICATION_URL', '' );
    define ( 'ADMIN_EMAIL', '' );
    define ( 'DOMAIN_NAME', '' );
    define ( 'SITE_NAME', '' );
    define ( 'SITE_SLOGAN', '' );
    define ( 'USE_SMTP', FALSE );
    define ( 'SMTP_PORT', '' );
    define ( 'SMTP_HOST', '' );
    define ( 'SMTP_USER', '' );
    define ( 'SMTP_PASS', '' );
    define ( 'LANG_TYPE', 'english' );
    define ( 'MAIL_IS_HTML', TRUE );
    define ( 'KEEP_LOGGED_IN_FOR', '8640000' );
    define ( 'APPLICATION_INDEX_PAGE', 'index.php?' );
    define ( 'REDIRECT_TO_LOGIN', 'login' );
    define ( 'REDIRECT_AFTER_LOGIN', 'members' );
    define ( 'REDIRECT_ON_LOGOUT', 'login' );
    define ( 'RUN_ON_DEVELOPMENT', FALSE );
    define ( 'TOOLTIPS_ENABLED', TRUE );
    define ( 'REDIRECT_AFTER_CONFIRMATION', TRUE );
    define ( 'ALLOW_USERNAME_CHANGE', FALSE );
    define ( 'DEFAULT_TEMPLATE', 'default' );
    define ( 'ALLOW_REMEMBER_ME', TRUE );
    define ( 'AUTOLOAD_LIBRARIES', 'database,session,site_sentry,permissions,tasks,site_language' );
    define ( 'MIN_USR_VOTES_HOMEPAGE', '2' );
    define ( 'MIN_WALL_VOTES_HOMEPAGE', '2' );
    define ( 'WALLPAPER_DISPLAY_ORDER', 'date_added' );
    define ( 'WALLPAPER_ORDER_TYPE', 'DESC' );
    define ( 'MAX_TAGS', '20' );
    define ( 'TAGS_ORDER_BY', '' );
    define ( 'TAGS_ORDER_BY_METHOD', 'DESC' );
    define ( 'TAGS_MIN_CHARACTERS', '3' );
    define ( 'APPLICATION_FOLDER', '' );
    define ( 'CATEGORY_COLUMNS', '3' );
    define ( 'SHOW_CATEGORY_COUNTERS', FALSE );
    define ( 'TRACKING_CODE', '' );
    define ( 'TOP_DOWNLOAD_AD_CODE', '' );
    define ( 'WALLPAPER_IPHONE_AD_CODE', '' );
    define ( 'ENABLE_MOD_REWRITE', TRUE );
    define ( 'WALLPAPER_QUALITY', '100' );
    define ( 'WALLPAPERS_PER_COLUMN', '20' );
    define ( 'SITE_HAS_ADULT_MATERIALS', FALSE );
    define ( 'GUESTS_CAN_DOWNLOAD', TRUE );
    define ( 'GUESTS_CAN_UPLOAD', FALSE );
    define ( 'AUTO_APROVE_COMMENTS', TRUE );
    define ( 'OPEN_WALLPAPERS_IN_NEW_WINDOW', TRUE );
    define ( 'MAX_COLORS', '162' );

//    END SETTINGS

Неактивен

 

#14 09.04.2014 11:43:51

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Проблема с датами

Это явно не тот файл

define ( 'HOSTNAME', '' );
define ( 'DATABASE', '' );
define ( 'DBUSER', '' );
define ( 'DBPASS', '' );

красноречиво об этом говорит.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#15 09.04.2014 11:45:11

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Проблема с датами

найдите место где идет подключение к базе mysql_connect...
и после добавьте строку
mysql_query("SET time_zone='+2:00'");

Неактивен

 

#16 11.04.2014 00:06:25

Masteron
Участник
Зарегистрирован: 05.04.2014
Сообщений: 14

Re: Проблема с датами

Если я правильно понял, то должно выглядеть вот так:

   function db_connect()
    {
        return @mysql_connect($this->hostname, $this->username, $this->password, TRUE);
        mysql_query("SET time_zone='+2:00'");
    }


Правильно? Что при этом должно произойти?

Неактивен

 

#17 11.04.2014 01:24:16

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Проблема с датами

После return ничего выполняться не будет, поэтому правильнее так:

$x =  @mysql_connect($this->hostname, $this->username, $this->password, TRUE);
mysql_query("SET time_zone='+2:00'");
return $x;


После этого даты, соответствующие временам в базе изменятся. Зону в часах подберите так, чтобы все файлы открывались.

Неактивен

 

#18 11.04.2014 15:34:25

Masteron
Участник
Зарегистрирован: 05.04.2014
Сообщений: 14

Re: Проблема с датами

После выбора правильной зоны сайт должен заработать нормально, по идее, либо теперь он будет работать по-новому лишь с новыми записями?

Отредактированно Masteron (11.04.2014 15:35:43)

Неактивен

 

#19 11.04.2014 17:12:43

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Проблема с датами

Он должен работать как раньше, если установить таймзону какая была раньше

Неактивен

 

#20 12.04.2014 01:00:18

Masteron
Участник
Зарегистрирован: 05.04.2014
Сообщений: 14

Re: Проблема с датами

Ничего не получается, даже не знаю, что делать дальше sad Перепробовал все известные мне часовые пояса - время остается неизменным. Если я правильно понял, то это должно привести даты в правильный порядок, но при этом ничего не происходит sad

Неактивен

 

#21 12.04.2014 01:11:03

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Проблема с датами

Вы точно исправили в том месте, где реально происходит подключение? Попробуйте еще установить time_zone прямо в том скрипте, который формирует имя файла

Неактивен

 

#22 12.04.2014 13:08:57

Masteron
Участник
Зарегистрирован: 05.04.2014
Сообщений: 14

Re: Проблема с датами

В паке скрипта я один интересный файлик нашел, там есть информация про даты и какие-то преобразования. Может посмотрите: photostalker.net/date_helper.zip

Неактивен

 

#23 12.04.2014 14:39:00

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Проблема с датами

Из этого файла сделать вывод нельзя, так как неизвестно какие функции для чего используются.

Неактивен

 

#24 12.04.2014 15:20:11

Masteron
Участник
Зарегистрирован: 05.04.2014
Сообщений: 14

Re: Проблема с датами

Не знаю, имеет ли смысл кидать ссылку на дистрибутив CMS-ки? Там очень много файлов, но вы хотя бы знаете, что искать.

Неактивен

 

#25 12.04.2014 15:47:12

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Проблема с датами

Работу с кодом CMS вряд ли можно сделать через форум. Вам нужен программист, который разберется в этой системе

Неактивен

 

Board footer

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