Переход с MySQL на PostgreSQL в проекте Symfony2 (ShareOBJ.com)

postgresql-600x600Статья написана для Symfony2 разработчика или новичка. Проектирование базы в Doctrine и ошибки, которых можно было избежать.
Для тех, кто только начал проектировать базу или только наполняет свои Repository классы методами с запросами. Пожалуйста, используйте DQL. Вам самим будет потом легче.
Не верьте, что та база, с которой вы сейчас работаете, будет вечной, всегда в тренде и всегда её мощностей хватит. Рано или поздно придётся перебираться на более производительные решения.
Continue reading “Переход с MySQL на PostgreSQL в проекте Symfony2 (ShareOBJ.com)”

С чего бы MySQL server has gone away?

Пытался импортировать дамп базы данных на свой MySQL сервер, но никак не получалось, на многих записях сервер сообщал следующее: MySQL server has gone away. Сообщение забавное, но в чём же проблема, почему некоторые жирные insert-ы не проходили.

Не проходили пакеты. В my.cnf прописал:
max_allowed_packet = 200M

Всё заработало.

Замена строк в MySQL

Трагедия, трагедия. 🙂

На doBlox.ru один наш пользователь закачал много фильмов, но не потрудился изменить название на русское и не написал никакого описания.
Заменять в 80-ти сериях заголовок вручную было бы муторно.
Таким запросом это сделалось просто и быстро:
UPDATE `pubs` SET `pub_title` = ( REPLACE ( pub_title, 'Everybody Hates Chris', 'Все ненавидят Криса' ) );

Удалить дубли из таблицы MySQL

Нашёл интересный способ удаления дублей из базы данных. В частности была импортирована база пользователей, но попались и повторения, что недопустимо для поля ‘login’. Починил вот таким запросом:

 ALTER IGNORE TABLE 'users' ADD UNIQUE 'login' ('login');

Автоматический вход в PHPMyAdmin

Задача: сделать автоматический вход в PHPMyAdmin для панели пользователя хостинга.

По самому простому пути идти мне было не дано, потому я начал посылать логин pma_username и пароль pma_password методом POST.

А на самом-то деле это и ни к чему.
Направляем пользователя на скрипт, который перенаправляет на PHPMyAdmin методом GET.

http://phpmyadmin.loc/index.php?pma_username=mysql_user&mysql_password=password&db=user_db

Где,

mysql_user – имя пользователя базы,

mysql_password – пароль для пользователя базы,

user_db – пользовательская база данных.

<?php

header(“Location: http://phpmyadmin.loc/index.php?pma_username=mysql_user&pma_password=password”);

?>

Прибавить к дате интервал времени в MySQL

Для кого-то элементарное знание MySQL, а для меня это было трудностью. Голова уже старая, не держит ничего в себе.

Задача: добавить год к существующей дате. Буквально – продление подписки на год и смещение expiration date на год вперёд.

UPDATE hosts SET exp_date = DATE_ADD(exp_date,INTERVAL 1 YEAR) WHERE hosts_id = 1;

В таблице hosts для поля exp_date в строке с host_id = 1 прибавится 1 год.

Один простой запрос, хотя сначала я думал парсить дату, добавлять к ней 1 год и затем вставлять её в базу.

Got error 28 from storage engine

Интересный нюанс был сейчас, работодатель попросил посмотреть что с сайтом. Говорит, что развалилась вёрстка вся. Я смотрю внимательно на сайт, весь перекосило. Смотрю источник страницы (html код).
Вижу что футера нет и страница не загрузилась полностью. А внизу красуется сообщение “Got error 28 from storage engine“.

Сайт делал не я, ну думаю наверняка какое-нибудь внутреннее сообщение об ошибке.

Потом ради интереса набираю в консоли сервера df -h и вижу, что на диске свободно 0 мегабайт.

Оказалось что ругался MySQL, а Got error 28 from storage engine бонально означает “не хватает места на диске“.

Удалил файлик пожирнее и вёрстка починилась.