Tag Archives: 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
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; |
А на будущее лучше пользоваться более полным синтаксисом создания внешних …
MySQL. Восстановление из бэкапа
Понадобилось восстановить бэкап mysql размером примерно в гигабайт. Всякие phpMyAdmin даже сжатый файл кушать отакзываются — ограничение по размеру, а доступа к настройкам нет. Нашёл хороший способ — в командной строке
1 2 3 4 |
mysql mysql>use database <>; mysql>source path/to/backup_file.sql; |
Очень быстро и хорошо) http://forums.mysql.com/read.php?104,145923,148081#msg-148081
PhpStorm DB Navigator
Чтобы работать напрямую с MySQL-базой из PhpStorm: Установить плагин Database Navigator (перезапустить IDE — появится пункт DB Navigator). Скачать jdbc-драйвер (http://www.mysql.com/downloads/connector/j/) DB Navigator → Settings → add connection: driver library — …mysql-connector-java-5.1.16-bin.jar url — jdbc:mysql://127.0.0.1:3306 user — root
MySQL: что быстрее, многоколоночный индекс или пересечение индексов (index merge)
Вкратце: если в условии WHERE разные столбцы соединяются условием OR, то лучше иметь отдельные индексы по этим полям, во всех остальных случаях нужно использовать многоколоночный индекс (данные по MySQL 5.2.4). Подробнее.
Установка MySQL, PHP и PHP-FPM под Debian linux
Установка MySQL:
Функции сравнения в mySql
http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html Не знал про COALESCE — функцию, которая возвращает первое ненулевое значение из переданных параметров.
Развитие MySQL: что нового в новых версиях
Перечислю основное. Версия 5.0 (http://dev.mysql.com/doc/refman/5.0/en/mysql-nutshell.html): Курсоры Хранимые функции Триггеры VIEW INFORMATION_SCHEMA (база о базах данных сервера) Тип данных VARCHAR Версия 5.1 (http://dev.mysql.com/doc/refman/5.1/en/mysql-nutshell.html): Оптимизация оптимизатора (особенно GROUP BY) InnoDB plugin Partitioning Row based replication Версия 5.4 (http://dev.mysql.com/doc/refman/5.4/en/mysql-nutshell.html): Улучшена масштабируемость Изменение подсистемы ввода-вывода InnoDB