Как удалить дублирующие записи в mysql

 
 

Требуется решить следующую проблему. Есть таблица. Первичный ключ id, кроме всех прочих полей есть поле name. Оказывается, что существует несколько строк с разными id, но одним и тем же name.

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

Колдовать это в mysql можно по разному, вплоть до временных таблиц и т.д. Однако есть способ проще – с помощью создания уникального индекса.

Итак

CREATE TABLE copy_table SELECT * FROM `таблица`;
ALTER IGNORE TABLE copy_table ADD UNIQUE ( Name );

А теперь внимательно смотрите на дубликаты. Вуаля!

C Днем программиста! 101011

Всех коллег поздравляю с профессиональным праздником!

happy coders day

Kohana: настройка

 

kohana logo

Сегодня хочу рассказать про базовую установку и настройку коханы версии 3. Кое что я уже писал, однако технологии не стоят на месте и определенным образом устаревают. Посему сегодня новый мануал.

Для начала идем на официальный сайт и скачиваем последнюю версию. На данные момент это 3.0.7.

После того как архив скачается его необходимо распаковать в корневую директорию сайта (веб-приложения). Вы конечно можете распаковывать его не в корень, однако в таком случае поправки в файле .htaccess будут иными.

Настроим .htaccess

  1. Добавляем опцию Options -Indexes, если она еще не добавлена. Стоит иметь ввиду, что подобная опция может уже стоять в настройках самого вебсервера. А может и не стоять. Поэтому для уверенности напишем ее.
  2. Проверить каталог установки (# InstallationDirectory). Если Вы ставили кохану в корень, то там должно быть написано

    # Installation Directory
    RewriteBase /
    

Настройка index.php

  1. При желании ядро системы, каталог system, может быть перемещен вне сайта (это может быть необходимо для обновлений, или например если у Вас несколько сайтов, а ядро фреймворка Вы хотите использовать одно). Аналогично можно перемещать папки application и modules. Однако если с каталогом system все ясно, с остальными я рекомендую Вам делать это только в том случае, если Вы понимаете что делаете.
  2. Если Вы что-то переместили – необходимо изменить переменные $system, $application и $modules на соответствующие пути.

Настройка application/bootstrap.php

Этот файл необходим для базовой настройки веб-приложения. В нем можно задавать различные конфигуационные параметры, определяющие работу всего приложения.

  1. Изменить значение date_default_timezone_set(‘Asia/Yekaterinburg’); на ту временную зону, которая Вам необходима (вот список доступных).
  2. Изменить значение setlocale(LC_ALL, ‘ru_RU.utf-8′); Обычно употребимая локаль в России – ru_RU.UTF-8. Если Вам по каким-то причинам нужна другая – Вы можете сделать это.

На этом базовая установка и настройка заканчивается. Далее Вы можете приниматься за разработку своего веб-приложения. Удачи Вам на этом пути!

Стоп не сработал? 0_0

 

Трейдеры шутят…

Стоп не сработал

Проблемка с postfix

   

На настроенной почтовой системе, которая работает уже достаточно давно в логах постоянно наблюдается примерно следующая вещь

postfix/smtpd[...]: sql_select option missing
postfix/smtpd[...]: auxpropfunc error no mechanism available

Поимке багов по логам несколько мешало, недавно нашел способ. Если пойти в папку /usr/local/lib/sasl2

$ pwd
 /usr/local/lib/sasl2
$ ls libsql.*
 libsql.a
 libsql.la
 libsql.so
 libsql.so.2

Эврика! Делаем бэкап. Дальше выполняем следующую последовательность команд. Учтите, что если Вы используете авторизацию SQL в постфиксе, то для Вас этот метод не сработает.

$ pwd
 /usr/local/lib/sasl2
$ mkdir ./deactivated.sql
$ mv libsql.* ./deactivated.sql
$ postfix reload

И вуаля – в лог лишнее более не пишется!

P.S. Также если ваш лог одолевает сообщение

postfix/smtpd[...]: OTP unavailable because can't read/write key database /etc/opiekeys: ...

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

$ pwd
 /usr/local/lib/sasl2
$ mkdir ./deactivated.otp
$ mv libotp.* ./deactivated.otp
$ postfix reload