Метка: MySQL

MySQL и foreign key constraint fails

Cannot add or update a child row: a foreign key constraint fails
Такое случается, если включена проверка InnoDB foreign key, но ссылается ключ на таблицу не InnoDB (например MyISAM)
лечится:

  • конвертированием всех таблиц в InnoDB
  • конвертирование всех таблиц в MyISAM
  • или отключением проверки:
DATABASES = {
'default': {
    ...         
    'OPTIONS': {
         "init_command": "SET foreign_key_checks = 0;",
    },
 }
}

Статейка про InnoDB

Mikrotik hotspot Uptime-Limit

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

sqlcounter uptimecounter {
    counter-name = Uptime-Total
    check-name = Uptime-Limit
    reply-name = Session-Timeout
    sqlmod-inst = sql
    key = User-Name
    reset = never
    query = "SELECT ifnull(sum(time_to_sec(timediff(acctstoptime,acctstarttime))),0) FROM radacct WHERE username like '%{%k}'"
}

Подключить модуль в секции authorize
Аттрибут Uptime-Limit в стандартных справочниках есть, если что — добавить не сложно.
Время сессии в секундах.

Mikrotik hotspot + Radius + счетчики (трафика?)

Собсно ничего сложного в этом нет.
Настройка Radius+MySQL стандартна:

apt-get install freeradius freeradius-mysql mysql-server

добавить базу, залить таблички из /etc/freeradius/sql/mysql/schema.sql
подключаем базу к freeradius правя /etc/freeradius/sql.conf и раскомментируя загрузку модуля sql.conf в radiusd.conf
раскоментируем модуль sql в
/etc/freeradius/sites-enabled/default (или в том, что используется) в секциях authorize authenticate и прочих закомментированных местах (мануалов тысяча, даже чуть больше), все стандартно.

Читать далее

Конвертация таблиц MySQL в UTF8

Джанга в очередной раз создала кучу таблиц в latin1, а вручную уж очень не хотелось

#!/bin/bash
host="127.0.0.1"
database=$1
pwd="password"
user="user"
tables=`mysql -h $host --user=$user --password=$pwd $database -e "show tables;" -s -r -N`
for table in $tables
do
	echo "Converting $table"
        #тут можно так же optimize table и что там еще
	mysql -h $host --user=$user --password=$pwd $database -e \    
           "alter table $table convert to character set 'utf8';"
done

MySQL-python (MySQLdb) in Mac OS X

Послe установки mysql5 из macports

sudo pip install mysql-python

по-умолчанию ругается на mysql_config not found, если клиент mysql5 установлен из портов, надо просто добавить путь до mysql_config в глобальный PATH, т.е. просто добавить

/opt/local/lib/mysql5/bin/

в файл /etc/paths

Бэкап базы и отправка почтой

#!/bin/bash
mailto=mail@example.com
database=db_for_backup
mysqluser=dbuser
mysqlpassword=dbpassword
mysqldump -u ${mysqluser} --password=${mysqlpassword}  ${database} > /tmp/data.sql
bzip2 /tmp/data.sql
DATE=`date +"%Y-%m-%d %H:%M"`
host=`hostname`
uuencode /tmp/data.sql.bz2 ${database}.sql.tbz2 > /tmp/data.uuc
mailx -s "[backup] MySQL DB: ${database} ${host} @ ${DATE}" ${mailto} < /tmp/data.uuc
rm /tmp/data.sql.bz2
rm /tmp/data.uuc