Posts Tagged ‘MySql’

Truc: Actualitzar els collations de totes les taules d’una base de dades MySql

dissabte, maig 29th, 2010

Un dia em vaig trobar amb una base de dades MySql que tenia mal fixats els collations (transformacions per a tipus de caracters).

Canviar-ho camp per camp, taula per taula, representava una feina molt feixuga.

Vaig trobar aquesta eina gratuita, en PHP, pensada per a fer-la anar des del nostra servidor web que fa el fet:

phoca-changing-collation-tool

Des d’allí hi podeu descarregar un arxiu zip que conté el codi PHP pensat per a executar-lo des d’un servidor web.

Tot i això res no impediria pas de fer servir el mateix programa des de línia de comandes amb l’ intèrpret PHP amb unes petitones modificacions.

Assumint el seu ús mitjançant un servidor web, si teniu moltes taules haureu de canviar el màxim temps d’execució de PHP puix que la operació durà temps.

Un avantatge del codi obert és que pots saber exactament què fa i evitar sorpreses desagradables.

Us adjunto el codi php de la eina per si mai deixés d’estar disponible:

<?PHP
/*
* @tool	Phoca Changing Collation
* @Changing collation of database, tables and columns
* @Run this script only at your own risk. If you have a big database
* @you need to change the script execution time in your php
* @copyright (C) Jan Pavelka www.phoca.cz (http://www.phoca.cz)
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
* @based on script from http://php.vrana.cz/ - Author - Jakub Vrana
* @license http://creativecommons.org/licenses/by/2.5/
* @Creative Commons Attribution 2.5 Generic
*/
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-gb" lang="en-gb">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="robots" content="index, follow" />
<meta name="keywords" content="phoca, server unzip" />
<meta name="description" content="Phoca Server Unzip tool" />
<meta name="generator" content="www.phoca.cz" />
<title>Phoca Server Unzip tool</title>
<style type="text/css">
    body {font-family: Arial, sans-serif; font-size: 10px; color: #000000 ;}
    h1 a {color:#006699;text-decoration:none;}
    #info {position: relative;float:right; top:10px; right:10px; text-align:right;margin-bottom:10px;}
    .error {font-weight:bold;color:#c10000}
    .warning {font-weight:bold;color:#ff8102}
    .success {font-weight:bold;color:#008040}
    .window {position:relative;top:10px;left:10px;width:95%;padding:5px;height:300px; overflow:auto;border:1px solid #000;background:#fbfbfb;clear:both;}
</style>
</head>
<body>
<div id="info">
    <img src="assets/phoca-logo.png" alt="Phoca" /><br />
    <a href="http://www.phoca.cz/">www.phoca.cz</a><br />
    <a href="http://www.phoca.cz/forum">www.phoca.cz/forum</a>
</div>
<h1><a href="index.php">Phoca Changing Collation tool</a></h1>
<?php
    function start_db($mysqlhost,$mysqldatabase, $mysqluser, $mysqlpass)
    {
        global $conn;
        $conn = mysql_connect($mysqlhost, $mysqluser, $mysqlpass);
        if (!$conn)
        {
           echo '<a href="index.php">Back to the main site</a><br />';
           die('Database error.');
        }
        $select = mysql_select_db($mysqldatabase, $conn);
        if (!$select)
        {
           echo '<a href="index.php" >Back to the main site</a><br />';
           die('Database error.');
        }
    }
    function end_db ($conn)
    {
        mysql_close($conn);
    }
if (   isset($_POST['host'])
    && isset($_POST['user'])
    && isset($_POST['pass'])
    && isset($_POST['name'])
    && isset($_POST['col']))
{
    $mysqlhost 		= $_POST['host'];
    $mysqluser 		= $_POST['user'];
    $mysqlpass 		= $_POST['pass'];
    $mysqldatabase 	= $_POST['name'];
    $collation 		= $_POST['col'];
    // Change the time -------------------------------------
    $changedMaxExecTime		= 0;
    $standardMaxExecTime 	= ini_get('max_execution_time');
    if ($standardMaxExecTime != 0  && $standardMaxExecTime < 120) {
        set_time_limit(120);
        $changedMaxExecTime	= 1;
    }
    // -----------------------------------------------------
    start_db($mysqlhost,$mysqldatabase, $mysqluser, $mysqlpass);
    //Start code from http://php.vrana.cz/ - Author - Jakub Vrana
    function mysql_convert($query) {
        echo '<div>' . $query . ' ... <span style="color:#26d92b;">OK</span></div>';
    return mysql_query($query);
    }
    echo '<div></div>';
    echo '<div>';
    mysql_convert("ALTER DATABASE $mysqldatabase COLLATE $collation");
    $result = mysql_query("SHOW TABLES");
    while ($row = mysql_fetch_row($result)) {
        mysql_convert("ALTER TABLE $row[0] COLLATE $collation");
        $result1 = mysql_query("SHOW COLUMNS FROM $row[0]");
        while ($row1 = mysql_fetch_assoc($result1)) {
            if (preg_match('~char|text|enum|set~', $row1["Type"])) {
                mysql_convert("ALTER TABLE $row[0] MODIFY $row1[Field] $row1[Type] CHARACTER SET binary");
                mysql_convert("ALTER TABLE $row[0] MODIFY $row1[Field] $row1[Type] COLLATE $collation" . ($row1["Null"] ? "" : " NOT NULL") . ($row1["Default"] && $row1["Default"] != "NULL" ? " DEFAULT '$row1[Default]'" : ""));
            }
        }
    }
    echo '</div>';
    mysql_free_result($result);
    //End code from http://php.vrana.cz/ - Author - Jakub Vrana
    end_db($conn);
    echo '<p>&nbsp;</p><a href="index.php">Back to the main page</a>';
    // Set back the time --------------------
    if ($changedMaxExecTime == 1) {
        set_time_limit($standardMaxExecTime);
    }
    // --------------------------------------
}
else
{
    ?>
    <h2>Change database collation (DATABASE, TABLES, COLUMNS)</h2>
    <form action="index.php" method="post">
    <table>
    <tr><td>Database Host</td><td><input type="text" name="host" value="localhost" /></td></tr>
    <tr><td>Database User</td><td><input type="text" name="user" value="username" /></td></tr>
    <tr><td>Database Password</td><td><input type="password" name="pass" value="password" /></td></tr>
    <tr><td>Database Name</td><td><input type="text" name="name" value="database name" /></td></tr>
    <tr><td>Database Collation</td><td><input type="text" name="col" value="utf8_general_ci" /></td></tr>
    <tr><td></td><td><input type="submit" value="Submit" /></td></tr>
    </table>
    </form>
    <?php
}
?>
</body>
</html>
Català-Catalunya English-USA Traduir a l'Anglès. Translate to English Compartir: La TafaneraIndependènciaCatosfera|FacebookTwitterFriend Feed|googleDeliciousDiggTechnoratiredditmixxyahoolivestumbleuponsimpy

Alliberat HeidiSql 5.1

dissabte, abril 17th, 2010

El proppassat dia 15 s’alliberà la versió 5.1 de HeidiSQL.

HeidiSQL és un programari lliure que permet treballar amb servidors de bases de dades MySql.

Aquesta versió, estable, soluciona alguns problemes (bugs) i incorpora noves funcionalitats.

La que més m’agrada és que quan s’executa un procediment emmagatzemat (stored procedure) des del menú contextual, el programa ens demanarà en una finestra els paràmetres per al procediment.

El podeu descarregar de la seva web:

http://www.heidisql.com/

Català-Catalunya English-USA Traduir a l'Anglès. Translate to English Compartir: La TafaneraIndependènciaCatosfera|FacebookTwitterFriend Feed|googleDeliciousDiggTechnoratiredditmixxyahoolivestumbleuponsimpy

Alliberat Heidi Sql 5.0

dilluns, març 29th, 2010

El proppassat dia 26 s’alliberà d’aquest potent  gestor gratuït de bases de dades MySql.

És similar al conegut TOAD per a Oracle, però per a MySQL,  nogensmenys peta molt menys que toad i és programari lliure (open source).

Està disponible per a Windows, però corre perfectament sota WINE (Windows Emulator).

Ahir no vaig comentar que no es tracta de la versió final sinó d’una beta (nightly build), nogensmenys la versió anterior beta només m’ha fallat un cop.

El podeu descarregar des de la seva plana web:

http://www.heidisql.com/

Català-Catalunya English-USA Traduir a l'Anglès. Translate to English Compartir: La TafaneraIndependènciaCatosfera|FacebookTwitterFriend Feed|googleDeliciousDiggTechnoratiredditmixxyahoolivestumbleuponsimpy

PHP Veure les columnes d’una taula

divendres, gener 8th, 2010

De vegades quan estem programant contra un servidor remot podem necessitar conèixer l’estructura d’unes taules de la base de dades, però no tenir cap eina per a fer-ho.

Llavors podem escriure un PHP que executi una consulta com aquesta:

No deixa de ser una forma de fer un DESCRIBE, que és una comanda Sql.

<?php
// Per codic.cat

$o_result = mysql_query("SHOW COLUMNS FROM la_meva_taula");
if (!$o_result) {
    echo 'No puc executar la consulta: ' . mysql_error();
    exit;
}
if (mysql_num_rows($o_result) > 0) {
    while ($r_fila = mysql_fetch_assoc($o_result)) {
        print_r($r_fila);
        echo "<BR>";
    }
}

php?>

El codi anterior ens retorna en forma de matriu (array) el nom de les columnes, el tipus de dades, longitud…

Com ara:

Array
(
[Field] => id
[Type] => int(7)
[Null] =>
[Key] => PRI
[Default] =>
[Extra] => auto_increment
)
Array
(
[Field] => email
[Type] => varchar(100)
[Null] =>
[Key] =>
[Default] =>
[Extra] =>
)
Català-Catalunya English-USA Traduir a l'Anglès. Translate to English Compartir: La TafaneraIndependènciaCatosfera|FacebookTwitterFriend Feed|googleDeliciousDiggTechnoratiredditmixxyahoolivestumbleuponsimpy

WAMP

dijous, desembre 24th, 2009

WAMP vol dir:

Windows

Apache

MySql

PHP.

És habitual l’expressió LAMP:

Linux

Apache

MySql

PHP.

La gent de wampserver.com van desenvolupar un WAMP:

Apache + MySql +  PHP per a Windows.

Bàsicament han creat un executable que instal·la Apache, Php, i MySql tot llest per a començar a programar i que permet configurar la majoria de coses amb un clic.

Les directives de PHP.INI o d’Apache (httpd.conf) es poden modificar amb una simple pulsació del botó del ratolí, i llavors el programari modifica els fitxers de configuració.

Així per exemple per a activar en PHP que permeti usar <? i no només <?php, enlloc de modificar l’arxiu PHP.INI i acativar la directiva short open tag, fem clic a la opció pertinent, wamp fa que s’actualitzi la configuració, i al cap de 2 segons en el nostre entorn ja permet executar codis PHP com <?=”Hola Catalunya”?>.

Crear àlies al servidor web es fa també des del ratolí i és terriblement fàcil.

Una altra de les gràcies és que permet disposar de diverses versions d’Apache, de PHP o de MySql i de bescanviar quina s’està executant amb un clic.

Nogensmenys per a fer això s’ha d’instal·lar uns complements.

I per a acabar-ho d’adobar incorpora el PHPMyAdmin, que és un administrador web per a MySql, per a poder crear les taules, índexs, afegir usuaris, permisos, etc… des de la mateixa eina.

No podia faltar la opció phpinfo(). ;-)

Jo acostumo a desenvolupar en PHP contra Linux, o bé contra Windows, però en configuracions on tot és instal·lat manualment i els arxius s’han de modificar a mà: el servidor Web, MySql, i el PHP…

I haig de dir que amb wampserver va ser descarregar-lo i començar a programar en qüestió de segons.

El fet de poder parar tots els serveis per a que no consumeixin memòria ni CPU mentre no els fem servir, i poder-los reiniciar en segons amb un clic, també és d’agrair.

Català-Catalunya English-USA Traduir a l'Anglès. Translate to English Compartir: La TafaneraIndependènciaCatosfera|FacebookTwitterFriend Feed|googleDeliciousDiggTechnoratiredditmixxyahoolivestumbleuponsimpy

Oracle compra Sun Microsystems

Dimarts, abril 21st, 2009

042009_oraclesunCNET informa que Oracle comprarà Sun Microsystems.

Oracle, és coneguda per la seva base de dades Oracle, emprada principalment en grans negocis que necessiten escalabilitat (creixement, clústers…) (i també coneguda per la seva gran quantitat de bugs o errors) i altres productes com Oracle Portal, i Sun Microsystems és coneguda per la seva línia de Servidors de gran capacitat de càlcul i escalabilitat i per el llenguatge Java utilitzat arreu del món.

Els servidors de Sun Microsystems venen de sèrie amb Solaris, el sistema operatiu Unix de Sun.

També es pot instal·lar Linux.

Alguns tipus de servidors rack de Sun Microsystems

Feia temps que els servidors de Sun havien anant perdent pes enfront de servidors enrackables compatibles amb pc.

Si us fixeu empreses com Google o Amazon empren milers de servidors Pc i Linux.

El cert és que el preu de la memòria de Sun era prohivitiu. Memòria que es podia comprar de forma genèrica per pocs euros.

Per exemple havia vist un Giga de ram de Sun per 1.000 € quan es podia comprar memòria compatible per 70 € que funcionava.

Coses semblants passaven amb Mac.

En un entorn distribuït amb molts usuaris té sentit tenir Pc’s balancejats, de manera que si un d’aquests barats Pc’s s’espatlla, els altres assumeixin la seva feina. Són els webserver o Servidors Web o frontals.

Després, els Servidors de Bases de Dades poden ser ordinadors molts més potents que el PC més potent, i que si es queden petit, es puguin canviar sense probleme per un model superior. És el que coneixem com Escalabilitat (la capacitat d’escalar, o crèixer en rendiment)

Fa poc Ibm volia comprar Sun però aquestes negociacions no van eixir.

Oracle també ha perdut pistonada en front de la combinació de Servidors PC amb Linux, Apache, MySql i PHP, el que es coneix com LAMP.

MySql és una Base de Dades gratuita molt potent, i s’empre en moltes intal·lacions de WordPress i portals d’empreses, i que va ser comprada no fa massa per Sun.

Oracle i Sun va anunciar el dilluns 2009-04-20 que han subscrit un acord definitiu en virtut del qual Oracle adquirirà diumenge accions comunes per 9,50 $ per acció en efectiu.

sun_barra_lateralDe fet Sun havia començat a obrir-se feia temps. Java, un producte gratuït, li havia permés de sobreviure quan les coses li anaven maldades.

Van crear Open Solaris, una versió oberta de Solaris, el seu Unix propietari.

Van començar a vendre  Servidors Sun basats en AMD (competència de Intel), per tant PC compatibles, és a dir, van apostar per tecnologies obertes (el seu hardware era propietari i només el podien fabricar ells, igual que Mac abans que ha acabat passant-se a PC).

Degut als grans avanços de PC i la Virtualització també van posar ènfasi en la Virtualització i en l’estalvi d’energia.

Sembla que les plataformes obertes, les idees obertes, van menjant el terreny a les propietàries i controlades.

Català-Catalunya English-USA Traduir a l'Anglès. Translate to English Compartir: La TafaneraIndependènciaCatosfera|FacebookTwitterFriend Feed|googleDeliciousDiggTechnoratiredditmixxyahoolivestumbleuponsimpy

Alliberat MySql 5.1.32

dimecres, març 18th, 2009

logo_mysql_sun_aEl passat 14 de Febrer de 2009 es va alliberar la versió 5.1.32 de Mysql que soluciona molts bugs.

La llista d’errors esmenats és força llarga.

Per a conèixer quina versió de MySql estem executant serà prou amb iniciar la consola de MySql:

mysql_5_1_30_consola_codiccat

Via: MySql.org

Català-Catalunya English-USA Traduir a l'Anglès. Translate to English Compartir: La TafaneraIndependènciaCatosfera|FacebookTwitterFriend Feed|googleDeliciousDiggTechnoratiredditmixxyahoolivestumbleuponsimpy