MySQL- Спиране на duplicate key erros при insert на доста стойности

Идеята е да се спести ресурс като се направи един INSERT с доста стойности в место нормалния метод с INSERT за всяка стойност. Тук обаче има подробност, че при INSERT на5 стойности(на пример) и едната е дублирана излиза грешка което пречи на останалите 4 да бъдат записани.

Решенията които се сещам са следните:

1. Проверява се които са налични и така се прави INSERT само на новите
2. Прави се insert но със INSERT IGNORE.

Пример за решение 2:

Без употреба на INSERT IGNORE:

mysql> insert into tags_basic (date_add,time_add,tag) VALUES ('2010-09-27','16:09:43','tag1'),('2010-09-27','16:09:43','tag2'),('2010-09-27','16:09:43','tag3'),('2010-09-27','16:09:43','tag5');
ERROR 1062 (23000): Duplicate entry 'tag1' for key 2

С употреба на INSERT IGNORE:

mysql> insert ignore into mtable (date_add,time_add,tag) VALUES ('2010-09-27','16:09:43','tag1'),('2010-09-27','16:09:43','tag2'),('2010-09-27','16:09:43','tag3'),('2010-09-27','16:09:43','tag5');
Query OK, 1 row affected (0.01 sec)
Records: 4  Duplicates: 3  Warnings: 0

На мен лично ми допада метод 2 понеже не се изискват допълнителни select заявки и калкулации в php/perl или каквото е там.

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Един форум на SMF се счупи

Един forum на SMF се счупи и какво да гледам:

mysqld[14988]: 100923 10:59:07 [ERROR] /usr/sbin/mysqld: Incorrect key file for table './database/smf_log_online.MYI'; try to repair it


Решение на проблема:

mysql> repair table smf_log_online;
+-------------------------------+--------+----------+------------------------------------+
| Table                         | Op     | Msg_type | Msg_text                           |
+-------------------------------+--------+----------+------------------------------------+
| ciscodchjoomla.smf_log_online | repair | warning  | Number of rows changed from 7 to 8 |
| ciscodchjoomla.smf_log_online | repair | status   | OK                                 |
+-------------------------------+--------+----------+------------------------------------+

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Изтриване на файл започващ с тире

Проблем при триенето на файлове или директории започващи с тире или dash

cd /tmp
touch ./'--dash-file'

Пробваме да изтрием файла започващ със dash:

machine:/tmp# rm -fr --dash-file
rm: unrecognized option `--dash-file'
Опитайте „rm ./--dash-file“, за да изтриете файла „--dash-file“.
Използвайте „rm --help“ за повече информация.

Виждаме, че дава грешка.

Решението е много просто, ето го и него:

rm -fr ./--dash-file

Готово :)

PS: Последно време пиша сравнително простички и често срещани проблеми понеже доста хора се сблъскват с тях които незнаят как да ги разрешат. Дано тези съвети им помогнат :)

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Как да архивираме с tar без някои директории

Идеята е да архивираме цялата директория X без нейната под директория XY.
Реален случай: Имаме сайт които използва кеширане и съхранява всички статични файлове в директория cache. Решаваме да архивираме сайта, но без директорията cache и за целта изпълняваме:

tar zcvvf website.tar.gz website/ --exclude=cache

По този начин архивираме целия сайт без директорията cache

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Жокер- optimize на mysql база

Сетих се да споделя как може да се изпълни "optimize table" на всички таблици в една база с една команда. Идеята е, че ако имате база с 300 таблици няма как една по една да изпълнявате "optimize table" както и не е необходимо да се пише скрипче което да ги обикаля и изпълнява. Решението е супер просто :

mysqlcheck -o DB -p

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Триене на MySQL bin логове

На доста хора сигурно се е случвало на по- стара машина с малък диск да има пусната сравнително големичка база и сайт. След време bin логовете пълнят целия хард и MySQL спира да работи. Какво решението ?!

1. Да се спре създаването на bin логове(които не препоръчвам)
2. Да се трият периодично(под периодично не разбирам всеки ден или през ден)

Решение:
След като сме се логнали в MySQL може да видим bin логовете по следния начин:

SHOW BINARY LOGS;

+------------------+------------+
| Log_name         | File_size  |
+------------------+------------+
| mysql-bin.001522 |     908287 |
| mysql-bin.001523 |   17500544 |
| mysql-bin.001524 |   11443409 |

Може да се трият един по един:

PURGE BINARY LOGS TO 'mysql-bin.001524';

или да се изтрият преди конкретна дата(може да се ползва и час)

PURGE BINARY LOGS BEFORE '2010-10-10 10:10:10';

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Google в различните страни

Ето списък на доста домейни на Google в съответните страни:

google.com
google.ae
google.com.af
google.com.ag
google.off.ai
google.am
google.com.ar
google.as
google.at
google.com.au
google.az
google.ba
google.com.bd
google.be
google.bg
google.com.bh
google.bi
google.com.bo
google.com.br
google.bs
google.co.bw
google.com.bz
google.ca
google.cd
google.cg
google.ch
google.ci
google.co.ck
google.cl
google.cn
google.com.co
google.co.cr
google.com.cu
google.cz
google.de
google.dj
google.dk
google.dm
google.com.do
google.com.ec
google.com.eg
google.es
google.com.et
google.fi
google.com.fj
google.fm
google.fr
google.gg
google.com.gi
google.gl
google.gm
google.gr
google.com.gt
google.com.hk
google.hn
google.hr
google.ht
google.hu
google.co.id
google.ie
google.co.il
google.co.im
google.co.in
google.is
google.it
google.co.je
google.com.jm
google.jo
google.co.jp
google.co.ke
google.kg
google.co.kr
google.kz
google.li
google.lk
google.co.ls
google.lt
google.lu
google.lv
google.com.ly
google.co.ma
google.md
google.mn
google.ms
google.com.mt
google.mu
google.mw
google.com.mx
google.com.my
google.com.na
google.com.nf
google.com.ni
google.nl
google.no
google.com.np
google.nr
google.nu
google.co.nz
google.com.om
google.com.pa
google.com.pe
google.com.ph
google.com.pk
google.pl
google.pn
google.com.pr
google.pt
google.com.py
google.com.qa
google.ro
google.ru
google.rw
google.com.sa
google.com.sb
google.sc
google.se
google.com.sg
google.sh
google.si
google.sk
google.sn
google.sm
google.com.sv
google.co.th
google.com.tj
google.tm
google.to
google.tp
google.com.tr
google.tt
google.com.tw
google.com.ua
google.co.ug
google.co.uk
google.com.uy
google.co.uz
google.com.vc
google.co.ve
google.vg
google.co.vi
google.com.vn
google.vu
google.ws
google.co.za
google.co.zm

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Честит празник Българи

Днес отбелязваме 125-тата годишнина от Съединението на Княжество България с Източна Румелия. 6 септември е обявен за официален празник на страната с решение на Народното събрание от 18 февруари 1998 г. След Берлинския конгрес от 1878 г. България е разделена на Княжество България и Източна Румелия (в пределите на Османската империя). Останалото под османска власт българско население се стреми към обединяване с освободените българи. Така през 1880 г. е създаден Българският таен централен революционен комитет (БТРЦК), чиято основна задача е да осъ…

За повече информация- novo10.com

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Лесно поставяне на Facebook бутон Like за всеки

Идеята на този метод е да не е необходимо умение в уеб програмирането. Стандартно когато се добавя facebook бутон Like е необходимо да се добави iframe и аргумент URL адреса на страницата, но ако не я знаеш не виждам как може да я въведеш(освен ако не пишеш на някакъв уеб език). Може и да има вариант, но аз лично не видях такъв. За целта реших да напиша едно "супер сложно и времеемко решение на javascript" което да поправя всичко това:

<script language=JavaScript>
<!--
document.write("<iframe src='http://www.facebook.com/plugins/like.php?href="+window.location.protocol + "//" + window.location.host + "/" + window.location.pathname+"&amp;layout=button_count&amp;show_faces=false&amp;width=100&amp;action=like&amp;colorscheme=light&amp;height=10' scrolling='no' frameborder='0' style='border:0px; overflow:hidden; width:140px; height:28px;' allowTransparency='true'></iframe>");
//-->
</script>

PS: Всеки вече би трябвало да може да си промени широчината, височината,очертанието и скролването.

PS1: Този facebook бутон tool е направен специално за един Fake рождеНнннник :P

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Редирект на цял сайт с htaccess

Ако ви се наложи в един хубав слънчев ден да пренасочите цял сайт ето един прост пример на htaccess:

redirectMatch 301 ^(.*)$ http://www.example.com

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Личен Блог на Мартин Петров