Проблема с переездом с LiveSteet на AltoCMS 1.1.23

Здравствуйте!

Решился наконец отказаться от LiveStreet. Главные факторы — это, конечно же, обещанная три года назад, но до сих пор не выпущенная LS 2.0, а также несовместимость с PHP 7 и отсутствие нормального антиспама. Но это все лирика. Проблема в конвертации базы. С первого захода словил проблему с дефолтным DATETIME в MySQL 5.7. Поправил запросом:
ALTER TABLE prefix_session MODIFY session_date_create datetime DEFAULT CURRENT_TIMESTAMP;

Восстановился, начал заново и словил ошибку:
Error: Duplicate column name 'topic_date_show'
Нагуглился вот этот комментарий. Переложил описанный фикс на реалии LS->Alto. Выполнил запросы из файла convert_1.0.3_to_alto.sql вручную. Все прошло гладко кроме предпоследнего:
UPDATE `prefix_topic` SET topic_date_show=topic_date_add WHERE topic_publish=1 AND topic_date_show IS NULL
Ошибка в запросe (1054): Unknown column 'topic_date_show' in 'where clause'

Что с этой ошибкой делать, без понятия.

Ну да ладно. Решил попробовать запустить сайт, раз большая часть запросов прошла. Но нет, сайт по-прежнему кидает на /install. Переименовал — выдает ошибку. Очевидно, все-таки еще не весь процесс установки прошел. Вернулся в инсталляшник, но если выбрать пункт «Конвертировать из LS в AltoCMS», то говорит, что база и так в Alto. И главное другого подходящего пункта вроде «ничего не конвертировать» нет. Еле догадался снять все галки. aVadim, хотелось бы этот момент сделать чуть более user friendly.

Ответил на несколько вопросов и вроде все успешно установил. Удаляю инсталляшник, открываю сайт и вижу это:
SQL Error: Unknown column 'storage_id' in 'order clause' at /var/www/site.ru/common/classes/modules/admin/mapper/Admin.mapper.class.php line 337 --- Array ( [code] => 1054 [message] => Unknown column 'storage_id' in 'order clause' [query] => SELECT storage_key AS ARRAY_KEY, storage_key, storage_val FROM prefix_storage ORDER BY storage_id [context] => /var/www/site.ru/common/classes/modules/admin/mapper/Admin.mapper.class.php line 337 )

Поковырялся в SQL-файлах и пришел к выводу, что какие-то запросы все-таки не выполнились. В convert_1.0.3_to_alto.sql попросту нет ни слова о колонке storage_id в таблице prefix_storage. Пытался дополнительно запустить sql.sql, но тот запнулся на первом же запросе.

P.S. Какие неаккуратные отступы от блоков кода в этой теме... И со шрифтами надо что-то делать, а то в поле ввода ничего не разглядеть.

Похожие статьи

  • Плагины Компании и Работа, теперь на Альто
    Добрый день, меня зовут Антон, я занимаюсь разработкой плагинов и доработок под Livestreet с 2009 года. Тогда же были написаны плагины Компании и Работа для livestreet, некий аналог разделам хабрахабр. Недавно стали...
  • Alto CMS vs LiveStreet
    После ожесточенных и непродолжительных боев в личке я сломался и согласился написать этот топик. Последней соломинкой, сломившей хребет верблюду, стал аргумент: «Пойми, это нужно не тебе и даже не проекту Альто в...
  • Alto vs livestreet — скорость сайта/удобство пользователей по версии google
    По версии PageSpeed Insights от компании Google, Alto значительно обошел по показателям вторую альфу livestreet. Сравнивались демо версии обоих движков, желающие могут убедиться самостоятельно =) https://developers....
  • Alto — Instant — Livestreet — выбор CMS
    Заранее извиняюсь если не совсем в тему. Прошу тогда админов просто топик удалить или перенести в нужный блог, а не банить сразу. Выбираю движек для нового сайта. Сразу скажу что я не программист, но делал несколько...

15 комментариев

+1
Конвертация базы с ЛС выполняется на Альто 1.0, а потом эту же базу надо конвертировать еще и в Альто 1.1. Можно вручную это сделать: install/db/convert_1.0_to_1.1.sql

Понимаю, что не очень изящно получается, но что делать — Альто постепенно все дальше отдаляется от старого доброго ЛС первой версии, и все тяжелее становится одним махом из старого ЛС все перенести в актуальную версию Альто. Лучше всего, наверное, вообще отдельный конвертор писать, а не пизать все в инсталляцию.

А у ЛС, кстати, уже даже бета второй версии вышла.

ЗЫ Топики большой, поэтому значительную часть текста я убрал под кат. Если что, можешь сам кат поставить, куда считаешь нужным
0
Спасибо за ответ!

Попробовал прогнать convert_1.0_to_1.1.sql. Выдало следующие ошибки:

-- Обновление поля prefix_topic.topic_date_show
UPDATE prefix_topic SET topic_date_show=topic_date_add
WHERE topic_publish=1 AND topic_date_show IS NULL
Ошибка в запросe (1054): Unknown column 'topic_date_show' in 'where clause'

-- STEP 15
ALTER TABLE  `prefix_topic` ADD INDEX (  `topic_date_show` )
Ошибка в запросe (1072): Key column 'topic_date_show' doesn't exist in table


На сайте:
SQL Error: Unknown column 't.topic_date_show' in 'where clause' at /var/www/site.ru/common/classes/modules/topic/mapper/Topic.mapper.class.php line 395 --- Array ( [code] => 1054 [message] => Unknown column 't.topic_date_show' in 'where clause' [query] => SELECT b.blog_type AS ARRAY_KEY, COUNT(t.topic_id) AS cnt FROM prefix_topic AS t LEFT JOIN prefix_blog AS b ON t.blog_id=b.blog_id WHERE 1=1 AND (t.topic_publish = 1) AND (t.topic_date_show IS NULL OR t.topic_date_show <= '2016-11-03 17:11:45') AND ((t.topic_date_show IS NOT NULL AND t.topic_date_show >= '2016-11-02 17:00:00' AND t.topic_date_show <='2016-11-03 17:11:45') OR (t.topic_date_show IS NULL AND t.topic_date_add >= '2016-11-02 17:00:00')) GROUP BY b.blog_type [context] => /var/www/site.ru/common/classes/modules/topic/mapper/Topic.mapper.class.php line 395 )
0
Нужно создать колонку topic_date_show в таблице prefix_topic и загнать туда значения по умолчанию:
ALTER TABLE `prefix_topic` ADD `topic_date_show` datetime DEFAULT NULL AFTER `topic_date_edit`;

UPDATE prefix_topic SET topic_date_show=topic_date_add
WHERE topic_publish=1 AND topic_date_show IS NULL;

ALTER TABLE  `prefix_topic` ADD INDEX (  `topic_date_show` );
0
Прогнал convert_1.0.3_to_alto.sql и convert_1.0_to_1.1.sql вручную, а потом провел установку. Во время SQL-импорта вылезла единственная ошибка:
ALTER TABLE `prefix_topic` ADD `topic_date_show` datetime DEFAULT NULL AFTER `topic_date_edit`
Ошибка в запросe (1060): Duplicate column name 'topic_date_show'

В остальном вроде сайт завелся, но есть косяки.

1) Не работают личные сообщения (/talk/) и настройки (/settings/):
SQL Error: Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'site.m.date_add' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by at /var/www/site.ru/common/classes/modules/mresource/mapper/Mresource.mapper.class.php line 1025 --- Array ( [code] => 1055 [message] => Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'site.m.date_add' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by [query] => SELECT IF( ISNULL(t.target_tmp), IF((t.target_type LIKE 'topic%'), 'topic', IF(t.target_type = 'profile_avatar' OR t.target_type = 'profile_photo', 'user', t.target_type)), 'tmp') AS ttype , count(t.target_id) AS count FROM prefix_mresource_target as t, prefix_mresource as m WHERE t.mresource_id = m.mresource_id AND (m.type & (1 | 16 | 64)) AND m.user_id = 1 GROUP BY ttype ORDER BY m.date_add desc [context] => /var/www/site.ru/common/classes/modules/mresource/mapper/Mresource.mapper.class.php line 1025 )


2) Аватарки большие:



3) Фотографии обрезаются:

0
По поводу SQL-ошибки — самое простое, пожалуй, это удалить поле prefix_topic.topic_date_show и создать его заново, как в я писал в комменте выше.

По поводу ошибки 1) — видимо, вылезают какие-то нюансы конкретной версии MySQL. Какая версия используется?

Ошибка 2) — для аватарок в базе, наверное, стоят абсолютные пути, указывающие на другой хост, поэтому обрезать их автоматически движок не может, а в верстке явно не задается размер. Поправим

По фото, честно говоря, уже не помню детально как там работает, посмотрю
0
1) — видимо, вылезают какие-то нюансы конкретной версии MySQL. Какая версия используется?
MySQL 5.7.

2) — для аватарок в базе, наверное, стоят абсолютные пути, указывающие на другой хост, поэтому обрезать их автоматически движок не может, а в верстке явно не задается размер. Поправим
Аватарки от Livestreet. Я их не трогал. Лежат в uploads/images.
0
Аватарки от Livestreet. Я их не трогал. Лежат в uploads/images.
Да, но в базе какой путь к ним прописан? Скорее всего полный путь к старому хосту
0
Угу, user_profile_avatar и user_profile_foto с абсолютными путями вида
http://site.ru/uploads/images/00/00/01/2013/05/14/avatar_100x100.png

Заменить на относительный?
0
Если прописать путь вида '@/uploads/images/...' (т.е. прям так, с символом @ в начале), то движок сам нарежет нужного размера. Ну и в CSS, конечно, я тоже исправлю, чтоб размеры явно подгонялись при выводе, даже если картинка большая
0
Спасибо! Аватарки поправились за единственным исклюением: в профиле юзера аватарки его друзей прыгают вниз при наведении.

Высокие фотографии пользователей в профиле по-прежнему обрезаются. Видимо, потому что в LS для них не задана высота, а в Alto задана.
0
Еще из проблем. Постоянно вылезает сообщение «System Error #1001»


В панели редактора кнопка с буквой «а:» при повторном наведении заглючивает: меню вылезает под полем ввода, и ничего выбрать нельзя:


Вообще сам этот редактор имеет какие-то визуальные глюки при прокрутке или наведении: выглядит это как перекрытие белым прямоугольником элементов этого редактора или части страницы. Маленько раздражает.

При создании статьи предлагается два личных блога: «блог им. меня» (видимо, из LS) и еще какой-то «мой персональный блог» (с маленькой буквы).

Загрузка картинок не демонстрирует прогресса, из-за чего многие могут подумать, что загрузка зависла, и нажать на кнопку «Загрузить» снова. Стоило бы блокировать кнопку «Загрузить» после нажатия и показывать какой-нибудь вращающийся лоадер.

В теме «Start Kit» что обозначает эта шестеренка? Она не кликается. Если так и задумано, то зачем она вообще?) Ссылки «Редактировать» и «Удалить» вполне сами за себя говорят.

Отредактирован:
0
«System Error #1001» у меня возникала после того, как я копировал установочные файлы на сервер по ФТП и не заметил, что несколько файлов не скопировались. Добавил файлы — проблема решилась.
+1
System Error #1001 — в первую очередь смотреть логи /_tmp/logs
Пришедшие с ЛС привыкли, что в логах, как правило, смотреть бесполезно, а зря — в логах Альто много чего можно увидеть
0
Во время такой ошибки вот это сыпется в SQL лог:
[LOG:1478578616.534-582151B88312A][2016-11-08 07:16:56][PID:13286][ERROR][[
SQL Error: Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'site.m.date_add' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by at /var/www/site.ru/common/classes/modules/mresource/mapper/Mresource.mapper.class.php line 987
---
Array
(
    [code] => 1055
    [message] => Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'site.m.date_add' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
    [query] => SELECT
                  IF(
                    ISNULL(t.target_tmp),
                    IF((t.target_type LIKE 'topic%' AND t.target_id = 0), 'current',
                      IF(t.target_type = 'profile_avatar' OR t.target_type = 'profile_photo', 'user', t.target_type)),
                    'tmp') AS ttype
                  , count(t.target_id) AS count
                FROM
                  prefix_mresource_target as t, prefix_mresource as m
                WHERE
                  t.mresource_id = m.mresource_id
                  AND m.user_id = 1
                  AND t.target_type IN ( 'current', 'tmp', 'blog_avatar', 'profile_avatar', 'profile_photo' )

                GROUP  BY
                  ttype                ORDER BY
                 m.date_add desc
    [context] => /var/www/site.ru/common/classes/modules/mresource/mapper/Mresource.mapper.class.php line 987
)

]][END:1478578616.534-582151B88312A]


Т.е. это все та же ошибка, что не пускает в личные сообщения и настройки.
0
Завел тестовый сайт на MySQL 5.7 — ошибки нет. То ли они возникает при определенных наборах данных, то ли еще в чем проблема, пока не понял. Но буду разбираться
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.