Category Archives: Databases
Написал Grunt-таск для бэкапа wordpress в репозиторий
Идея — делать бэкапы кода и базы в репозиторий на bitbucket. Запуск через крон. Сам код (если кому интересно) опубликую попозже. А вот полезные ссылки: https://npmjs.org/package/grunt-git (чтобы склонировать проект) https://npmjs.org/package/grunt-contrib-copy (для копирования кода) https://npmjs.org/package/grunt-file-process (для распарсивания конфига, чтобы узнать настройки доступа к базе) https://npmjs.org/package/grunt-mysql-dump (хотел дампить базу, но не взлетело) https://npmjs.org/package/grunt-shell (для дампа базы, для …
Freebase: делаем запросы к Google Knowledge Graph
http://habrahabr.ru/post/177217/ Вот ссылка на документацию — https://developers.google.com/freebase/v1/getting-started, вот редактор для выполнения запросов — http://www.freebase.com/query
Установка nginx, php-fpm и mysql на CentOS
На amazon aws стало слишком дорого, потому решил переехать на hetzner (через реселлера — fastvps). Посему ниже — краткий фак по установке элементарного на CentOS (решил попробовать её).
Mysql: поиск по полю с выставленным битом (по битовой маске)
Допустим есть таблица, где есть много записей. И нужно поработать с фильтрами по битовому полю.
Почему не надо использовать партицирование в MySQL
Коротко — потому что это всё сыро и глючно. Подробнее — http://habrahabr.ru/post/130999/
Решение проблемы PhpStorm «Value ‘0000-00-00 00:00:00’ can not be represented as java.sql.Timestamp»
Это проблема не PhpStorm, а драйвера JDBC. Для решения нужно обновить строку доступа к базе mySQL с jdbc:mysql://[ip]:3306 на jdbc:mysql://[ip]:3306?zeroDateTimeBehavior=convertToNull Ещё способы: http://stackoverflow.com/questions/782823/handling-datetime-values-0000-00-00-000000-in-jdbc
SQL: Как понять, когда надо писать условие в JOIN-условие, а когда в WHERE
Это в общем-то важно только для LEFT JOIN, для INNER JOIN тут могут быть только теоретические различия в производительности, хотя думаю, что парсер их решит.
MySQL DUPLICATE KEY UPDATE
Забавно получилось: давно написал, как сделать ON DUPLICATE KEY UPDATE для SQL Server и ON DUPLICATE KEY UPDATE для PostgreSQL, а «оригинал» не описал.
Удаление таблицы с FOREIGN KEY в MySQL
Допустим мы создали таблицу
1 2 3 4 5 6 7 |
CREATE TABLE IF NOT EXISTS `Inventory`.`Equipment` ( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `category_id` INT(10) UNSIGNED NOT NULL, PRIMARY KEY (`id`), FOREIGN KEY (`category_id`) REFERENCES EquipmentCategory(`id`) ON DELETE RESTRICT ) ENGINE=InnoDB DEFAULT CHARSET=utf8; |
Тогда при попытке удалить таблицу (или хотя бы ключ) получим сообщение
1 2 |
DROP TABLE IF EXISTS `Inventory`.`Equipment`; -- [HY000][152] Cannot delete or update a parent row: a foreign key constraint fails () |
Чтобы удалить таблицу, нужно сначала удалить CONSTRAINT, потом индекс, а только потом таблицу. Сначала узнаем название CONSTRAINTа:
1 2 3 4 5 6 7 8 9 |
SHOW CREATE TABLE `Inventory`.`Equipment`; --create table Inventory.Equipment ( -- id int unsigned not null, -- category_id int unsigned not null, -- primary key (id), -- foreign key Equipment_ibfk_1 (category_id) references EquipmentCategory(id) --); --create index category_id on Inventory.Equipment (category_id); |
Берём название Equipment_ibfk_1 и далее:
1 2 3 |
ALTER TABLE `Inventory`.`Equipment` DROP FOREIGN KEY `Equipment_ibfk_1`; ALTER TABLE `Inventory`.`Equipment` DROP KEY `category_id`; DROP TABLE IF EXISTS `Inventory`.`Equipment`; |
Потом можно восстановить
1 2 |
ALTER TABLE `Inventory`.`Equipment` ADD FOREIGN KEY (`category_id`) REFERENCES `EquipmentCategory`(`id`) ON DELETE RESTRICT; |
А на будущее лучше пользоваться более полным синтаксисом создания внешних …
Библиотека для доставания хранимых процедур из SQL Server)
Написана на python https://github.com/squadette/sqlup