После обновления Ubuntu до 16.04 перестала подниматься база данных, сначала я попробовал просто снести и поставить снова, но этот финт ушами, на удивление не прокатил...

 

При записи в базу данных строка обрезается до неразрывного пробела, такой пробел используется например в excel документах.

Пример кода для определения такого пробела:

$v = '0�184�455�600';
echo "<br> v = $v<br>";
$v2 = str_split($v);
foreach ($v2 as $v3) {
	echo "|";
	echo ord($v3);
}

$v = str_replace(chr(160), chr(32), $v);

$v = iconv('utf-8', 'utf-8//IGNORE', $v);

На ходе будет: |48|160|49|56|52|160|52|53|53|160|54|48|48

Как видно из примера, код символа неразрывного пробела 160, посмотреть соответствие ascii символов с их числовыми значениями можно тут http://www.asciitable.com/

 

При создании таблицы в базе получил вышеуказанную ошибку. SQL запрос был примерно таким:

CREATE TABLE `deposite_grants` (
`dg_key` int(11) NOT NULL AUTO_INCREMENT,
`dg_stc_mask` varchar(255) NOT NULL DEFAULT '%',
`dg_dlv_id` varchar(255) NOT NULL DEFAULT '%',
PRIMARY KEY (`dg_key`),
UNIQUE KEY `dg_stc_mask` (`dg_stc_mask`,`dg_dlv_id`,`dg_stc_mode`) USING BTREE
);

Суть ошибки в том, что длинна ключа для таблиц типа MyISAM ограничена 1000 байтами, в отличии от типа innoDB. Достаточно  лишь указать тип таблицы TYPE = InnoDB

 

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

 

ускорение MySQL запроса в 10 с лишним раз...

SELECT d.*, p.* FROM db.detail d
LEFT JOIN db.detail_info di ON d.detail_id = di.detail_id
LEFT JOIN db.producers p ON d.prd_id = p.prd_id
LIMIT 4031450, 50
 

MySQL триггер на изменение значения определенного столбца

BEGIN
  IF OLD.pst_arrival_date <> NEW.pst_arrival_date THEN
    INSERT INTO _logs (log_lgt_id, log_login, log_key_value, log_old_value, log_new_value, log_description) 
    VALUES ('order_state_history', 'trigger', OLD.pst_id, OLD.pst_arrival_date, NEW.pst_arrival_date, CONCAT(OLD.pst_arrival_date,' -> ',NEW.pst_arrival_date));
  END IF;
END

 

Все началось с того, что я нашел otg кабель в коробке из под своего нового планшета. Закинув на него пару программ через флешку, я подумал, а что если...

подключение к телефону клавиатуры, мышки и флэшки

 
При переходе на Линукс первым делом встал вопрос о рабочем месте. Нужно было найти комплексное решение, наподобие Денвера. Т.к. мне не хотелось\\rвыбирать пакеты устанавливать их по одному, не прельшало даже то, что их не надо настраивать. Выбор естественно пал на xampp. Почему? Потому что \\rфункционал их нисколько не урезан. А вот работать с ним не так удобно как с Денвером. Тут есть несколько особенностей, собственно чему статья и посвящена.

Категории

GIT сервер *nix html Linux php xampp SVN MySQL Настройка разработка Отладка Мысли mobile FirefoxOS тесты ЧПУ TinyMCE Киров блоггинг Вирусы Ubuntu Операционные системы JavaScript Android Среда разработки книги tips and tricks C# MSSQL С++ Qt PostgreSQL