Kā uzzināt datubāzes vai datubāzes tabulas izmēru no MySQL interfeisa?
Ko darīt, ja ir jāuztaisa eksports no MySQL datubāzes, bet - ar vaicājuma izmantošanu?
Vajag pārrakstīt (atjaunināt) tikai daļu no tabulas laukiem. Paskatīsimies kā to paveikt ar iepriekš izeksportēta faila palīdzību.
Kā tad īsti izmantot kaut ko līdzīgu IF .. ELSE iekš MySQL, ja ir nepieciešamība atgriezt vai nu vienu, vai otru vērtību? Par to šajā ierakstā...
Kā lai atgriež visas rindas no tabulas, kurās ir tukšumzīme?
Ko darīt, ja savajagās uzreiz izdzēst vairākas tabulas ar vienādiem prefiksiem, teiksim, "wp_icl_cms_nav_cache, wp_icl_content_status"?
Uz manas mājas darbstacijas debian ir uzliktas divas PHP verrsijas vienlaicīgi. Apskatīsimies, kā tad pārslēgties starp šīm versijām.
Sāku ķimerēties ar phpBB forumu. Viss ir jauki tik ilgi, kamēr tu nenoliec projektu malā, un neaizmirsti paroli... Paskatīsimies, kā to nomainīt ar SQL palīdzību.
Iepriekš jau biju nopublicējis rakstu par FULLTEXT izmantošanu LIKE vietā. Bet, nu ir kārta to drusciņ pietūnēt.
Reizēm ir nepieciešams arī nomainīt nosaukumu visai datubāzei, te arī būs pierakstīts rinsinājums, kā to pareizi paveikt.
Savajadzējās pārkopēt tabulas no vienas MySQL datubāzes uz citu. Tad nu uzmetīsim aci, kā šo pasākumu paveikt caur konsoli.
Kaut kā sačakarējos meistarībā, un uztaisīju MySql datubāzē vienu tabulu, kurai kolonu nosaukumi bija ar lielajiem burtiem, teiksim, Customer, Id, NickName, utt.
Nu ko, saprazdams, ka nebūs labi, mēģinu taisīt rename. Par cik, cietušas bija visas kolonas, tad nācās meklēt skriptu, kas to izdarīs manā vietā.
Vispirms ar mysqldump izeksportējam mūs interesējošo tabulu no datubāzes.
Atradu problēmiņu: datubāzē, izpildot vaicājumu vienai tabulai, kā atbilde tika izdota šāda kļūda:
Tad nu arī zemāk apskatisimies, kā šo kļūdu salabot:
Meklēšanai ar MySQL es parasti izmantoju ko šādu - select * from table where tiitle like '%keyword%';
Par to, kā kurš atšķirās, un kurš ir labāks, varam palasīt kaut vai šeit. Bet, savam projektam izdomāju izmantot arī fulltext meklēšanu.
Pirmo reizi palaižot komandu, saņēmu kļūdas paziņojumu ERROR 1214 (HY000): The used table type doesn't support FULLTEXT indexes
Te nu arī paskatīsimies, kā pārtaisīt tabulu, lai tā atbalstitu FULLTEXT meklēšanu.
Kā zināms, auto_increment tiek izmantots, lai katram ierakstam pievienotu +1. Tabula pēc noklusējuma sākas ar nr. 1, tātad, otrs ieraksts būs 2, utt.
Reizēm (it sevišķi testēšanā), ir nepieciešamība izdzēst visu tabulu, vai arī pamainīt šo auto indeksēšanas vērtību.
Tad nu turpinājumā apskatīšu 3 veidus, kā to varam izdarīt.
Ir situācijas, kad SQL sāk attēlot kaut kādus velnišķīgus ķeburus normālu (parasti nacionālo) simbolu attēlošanas gadījumā. Pie vainas var būt daudz kas, bet mēs sāksim ar prastāko, proti - lapai ir jābūt ar utf8 kodējumu. Parasti tas tiek ievietots meta tagā.
Reizēm ir nepieciešams zināt, cik rindas tiks atgrieztas no kāda SQL vaicājuma - vai viena rinda, vai vairākas, vai - neviena.
Piemēram:
Ir tabula, kurā ir lietotāji ar otro vārdu, un bez tā. Nepieciešams uzzināt, cik lietotājiem nav otrā vārda.
$link = mysql_connect("localhost", "mysql_user", "mysql_password");
mysql_select_db("database", $link);
$result = mysql_query("SELECT * FROM table1 where surname=null", $link);
$num_rows = mysql_num_rows($result);
echo "$num_rows Rows\n";
?>
Kā izeksportēt visu MySQL datubāzi, tas ir skaidrs:
mysqldump -u YourUser -p YourDatabaseName > wantedsqlfile.sql
Te prasīs DB paroli. Un imports, attiecigi:
mysql -u username -h hostname -p dbname < wantedsqlfile.sql
Bet, ko darīt, ja vajag tikai vienas tabulas eksportu / importu?