Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: lanjarón en 29 Enero 2010, 13:35 pm



Título: problemas con sqlite
Publicado por: lanjarón en 29 Enero 2010, 13:35 pm
hola! necesito ayuda
quiero crear una base de datos mysql en mi servidor pero el servidor no tiene instalado msql, tiene sqlite. cómo lo hago?


Título: Re: problemas con sqlite
Publicado por: :ohk<any> en 29 Enero 2010, 15:21 pm
hola! necesito ayuda
quiero crear una base de datos mysql en mi servidor pero el servidor no tiene instalado msql, tiene sqlite. cómo lo hago?

Cambia de servidor, o crea una base de datos en sqlite.
Si el server es tuyo, pues instalaselo.


Título: Re: problemas con sqlite
Publicado por: ^Tifa^ en 30 Enero 2010, 00:22 am
Creo que el se referira a que quiere crear un esquema o una base de datos en el servidor de base de datos que tiene, en este momento solo es SQLite, puedes crear un esquema o DB en SQLite y dentro de este crear tablas, procedimientos, etc, etc. Pero si vas a utilizar alguna aplicacion ya sea un foro o un manejador de contenidos si dicha aplicacion no es compatible o no soporta instalarse bajo un servidor SQLite, tendras que buscar otro servidor o si es tuyo el servidor instalarle MySQL.

Ahora sino ocurre el caso anterior y tienes una aplicacion que soporta SQLite o tu quieres trabajar con SQLite pero quieres crear primero tu esquema para poder trabajar con el, sencillamente haz:

Código:

bash$ sqlite3   Nombre_Base_datos

SQLite version 3.6.11
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> create table tbl1(one varchar(10), two smallint);
sqlite> insert into tbl1 values('hello!',10);
sqlite> insert into tbl1 values('goodbye', 20);
sqlite> select * from tbl1;



Es sencillo, en la web principal de SQLite te pueden guiar mas al manejo de este motorcito.

Fuente:  http://www.sqlite.org/sqlite.html


Título: Re: problemas con sqlite
Publicado por: Nakp en 30 Enero 2010, 00:34 am
tiene el driver sqlite de php? explicate mejor xD sqlite CARECE de servidor, son archivos manejados por un "driver" escrito en multiples lenguajes... que lenguaje usas? el sql es exactamente el mismo pero la forma de uso del driver varía de un lenguaje a otro


Título: Re: problemas con sqlite
Publicado por: lanjarón en 30 Enero 2010, 10:48 am
muchas gracias a todos. os voy a explicar exactamente mi problema:
tengo que instalar moodle en un servidor cuyo gestor de base de datos es sqlite, y antes de la instalación tengoq crearme una base de datos mysql. uno de los problemas es q ese servidor no es mio y no puedo instalar nada ahí, no cambio de servidor pq tng q utilizar ese. alguien ha tenido éste problema?


Título: Re: problemas con sqlite
Publicado por: Nakp en 30 Enero 2010, 17:40 pm
segun la documentacion oficial moodle soporta mysql, sqlserver, oracle y postgresql pero no sqlite (no en la version estabale)

sin embargo si estas usando la version 2.0 puedes seguir la guia que se encuentra en su wiki, todo lo que necesitas es tener el driver de sqlite en php

http://docs.moodle.org/en/Student_projects/SQLite#Moodle_installation_with_SQLite_database

no necesitas crear un schema ;)


Título: Re: problemas con sqlite
Publicado por: ^Tifa^ en 30 Enero 2010, 17:43 pm
Y moodle soporta o no instalarse en un motor SQLite???? porque independientemente que el servidor remoto soporte o no trabajar con el API de SQLite... Moodle como aplicacion trabaja con SQLite o no? Porque de este punto no me entero.

En caso que Moodle no te de opcion de trabajar bajo SQLite y solo soporte Postgresql y Mysql por ejemplo, lamentablemente tendrias que busar la forma de instalar o peticionar instalar o activarte una cuenta MySQL en dicho servidor remoto en caso que MySQL exista.

De lo contrario, tendrias que hacer un trabajito largo y modificar el codigo fuente de Moodle para que trabaje con el API de SQLite en vez del API de MySQL... y eso amigo no es un proceso de 2 horas  :xD


Título: Re: problemas con sqlite
Publicado por: Nakp en 30 Enero 2010, 17:58 pm
unicamente la version de desarrollo (2.0 en fase beta aun) soporta sqlite no necesita mas que seguir el instalador, si desea instalar la version estable la tiene negra xD

por suerte el api de mysql y de sqlite difieren en un prefijo y muy poco en funcionamiento, con buscar y reemplazar en varios archivos seguro se ahorra mucho trabajo :P


Título: Re: problemas con sqlite
Publicado por: ^Tifa^ en 30 Enero 2010, 18:07 pm
Si pero es un trabajito pesado para un usuario modificar codigo fuente para que dicha aplicacion trabaje con SQLite, no se en que esta hecho Moodle, pero si es en PHP tendria que buscar el soporte de SQLite para PHP el modulo... aunque creo no estoy segura que ya PHP trabaja  en muchas ocasiones con el API de SQLite (Siempre y cuando se haya compilado PHP con soporte a esto). Pero en caso que no... el usuario tambien tendria la tarea de recompilar??? PHP con soporte SQLite  :-\  y entonces despues de esto modificar algunas lineas del codigo fuente para que trabaje con el API de SQLite  :-\

Yo si fuese el, busco la manera de que me proporcionen MySQL o Postgresql o Oracle... es mas facil que hacer todo lo anterior...


Título: Re: problemas con sqlite
Publicado por: lanjarón en 2 Febrero 2010, 09:52 am
"Si pero es un trabajito pesado para un usuario modificar codigo fuente para que dicha aplicacion trabaje con SQLite, no se en que esta hecho Moodle, pero si es en PHP tendria que buscar el soporte de SQLite para PHP el modulo..."

moodle está hecho en php, a la hora de modificar el código fuente, qué tengo q hacer??
por ejemplo lo q tendría q modificar en install.php:

$INSTALL['dbtype']          = 'mysql';

if ($INSTALL['dbtype'] == 'mysql') {  /// Check MySQL extension is present
        if (!extension_loaded('mysql')) {
            $errormsg = get_string('mysqlextensionisnotpresentinphp', 'install');
            $nextstage = DATABASE;
        }
    }

if (empty($INSTALL['prefix']) && $INSTALL['dbtype'] != 'mysql') { // All DBs but MySQL require prefix (reserv. words)
        $errormsg = get_string('dbwrongprefix', 'install');
        $nextstage = DATABASE;
    }

if (empty($errormsg)) {

        error_reporting(0);  // Hide errors

        if (! $dbconnected = $db->Connect($INSTALL['dbhost'],$INSTALL['dbuser'],$INSTALL['dbpass'],$INSTALL['dbname'])) {
            /// The following doesn't seem to work but we're working on it
            /// If you come up with a solution for creating a database in MySQL
            /// feel free to put it in and let us know
            if ($dbconnected = $db->Connect($INSTALL['dbhost'],$INSTALL['dbuser'],$INSTALL['dbpass'])) {
                switch ($INSTALL['dbtype']) {   /// Try to create a database
                    case 'mysql':
                        if ($db->Execute("CREATE DATABASE {$INSTALL['dbname']};")) {
                            $dbconnected = $db->Connect($INSTALL['dbhost'],$INSTALL['dbuser'],$INSTALL['dbpass'],$INSTALL['dbname']);
                        } else {
                            $errormsg = get_string('dbcreationerror', 'install');
                            $nextstage = DATABASE;
                        }
                        break;
                }
            }
        } else {
        /// We have been able to connect properly, just test the database encoding now.
        /// It must be Unicode for 1.8 installations.
            $encoding = '';
            switch ($INSTALL['dbtype']) {
                case 'mysql':
                /// Get MySQL character_set_database value
                    $rs = $db->Execute("SHOW VARIABLES LIKE 'character_set_database'");
                    if ($rs && $rs->RecordCount() > 0) {
                        $records = $rs->GetAssoc(true);
                        $encoding = $records['character_set_database']['Value'];
                        if (strtoupper($encoding) != 'UTF8') {
                        /// Try to set the encoding now!
                            if (! $db->Metatables()) {  // We have no tables so go ahead
                                $db->Execute("ALTER DATABASE `".$INSTALL['dbname']."` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci");
                                $rs = $db->Execute("SHOW VARIABLES LIKE 'character_set_database'");  // this works

                            }
                        }
                        /// If conversion fails, skip, let environment testing do the job
                    }
                    break;
                case 'postgres7':
                /// Skip, let environment testing do the job
                    break;
                case 'oci8po':
                /// Skip, let environment testing do the job
                    break;
            }
        }
    }

    error_reporting(7);

    if (($dbconnected === false) and (empty($errormsg)) ) {
        $errormsg = get_string('dbconnectionerror', 'install');
        $nextstage = DATABASE;
    }

 <td class="td_mainheading" colspan="2">
            <p class="p_mainheading"><?php echo $headstagetext[$nextstage] ?></p>
            <?php /// Exceptionaly, depending of the DB selected, we show some different text
                  /// from the standard one to show better instructions for each DB
                if ($nextstage == DATABASE) {
                    echo '<script type="text/javascript" defer="defer">window.onload=toggledbinfo;</script>';
                    echo '<div id="mysql" name="mysql">' . get_string('databasesettingssub_mysql', 'install') . '</div>';

                    echo '<div id="postgres7" name="postgres7">' . get_string('databasesettingssub_postgres7', 'install') . '</div>';

                    echo '<div id="mssql" name="mssql">' . get_string('databasesettingssub_mssql', 'install');
                /// Link to mssql installation page
                    echo '<p align="right"><a href="http://docs.moodle.org/en/Installing_MSSQL_for_PHP" target="_blank">';
                    echo '<img src="' . $INSTALL['wwwrootform'] . '/pix/docs.gif' . '" alt="Docs" class="iconhelp" />';
                    echo get_string('moodledocslink', 'install') . '</a></p>';
                    echo '</div>';

                    echo '<div id="mssql_n" name="mssql">' . get_string('databasesettingssub_mssql_n', 'install');
                /// Link to mssql installation page
                    echo '<p align="right"><a href="http://docs.moodle.org/en/Installing_MSSQL_for_PHP" target="_blank">';
                    echo '<img src="' . $INSTALL['wwwrootform'] . '/pix/docs.gif' . '" alt="Docs" />';
                    echo get_string('moodledocslink', 'install') . '</a></p>';
                    echo '</div>';

                    echo '<div id="odbc_mssql" name="odbc_mssql">'. get_string('databasesettingssub_odbc_mssql', 'install');
                /// Link to mssql installation page
                    echo '<p align="right"><a href="http://docs.moodle.org/en/Installing_MSSQL_for_PHP" target="_blank">';
                    echo '<img src="' . $INSTALL['wwwrootform'] . '/pix/docs.gif' . '" alt="Docs" class="iconhelp" />';
                    echo get_string('moodledocslink', 'install') . '</a></p>';
                    echo '</div>';

                    echo '<div id="oci8po" name="oci8po">' . get_string('databasesettingssub_oci8po', 'install');
                /// Link to oracle installation page
                    echo '<p align="right"><a href="http://docs.moodle.org/en/Installing_Oracle_for_PHP" target="_blank">';
                    echo '<img src="' . $INSTALL['wwwrootform'] . '/pix/docs.gif' . '" alt="Docs" class="iconhelp" />';
                    echo get_string('moodledocslink', 'install') . '</a></p>';
                    echo '</div>';
                } else {
                    if (!empty($substagetext[$nextstage])) {
                        echo '<p class="p_subheading">' . $substagetext[$nextstage] . '</p>';
                    }
                }
            ?>
        </td>

<?php choose_from_menu (array('mysql' => get_string('mysql', 'install'),
                                              'oci8po' => get_string('oci8po', 'install'),
                                              'postgres7' => get_string('postgres7', 'install'),
                                              'mssql' => get_string('mssql', 'install'),
                                              'mssql_n' => get_string('mssql_n', 'install'),
                                              'odbc_mssql' => get_string('odbc_mssql', 'install')),
                                        'dbtype', $INSTALL['dbtype'], '', 'toggledbinfo();') ?>

 document.getElementById('mysql').style.display = '';

 document.all['mysql'].style.display = '';

 document.layers['mysql'].style.display = '';


y donde ponga mysql lo cambio por sqlite???


Título: Re: problemas con sqlite
Publicado por: ^Tifa^ en 2 Febrero 2010, 17:18 pm
Veo que tienes sumo interes en cambiar el codigo de Moodle para que no trabaje con el APi de MySQL y si con el API de SQLite.

Pero... como te dije No es una tarea sencilla, requerira mucho tiempo de tu parte hacer esto, no es solamente cambiar la variable de conexión a la DB... es tambien cambiar TODAS las funciones de todos los headers (archivos include o require) que posea el Moodle, donde haga consultas, eliminacion, actualizacion, etc... en MySQL ya que deberas sustituir todas esas funciones + sus parametros y esto no es una accion de 20 minutos que conste.

Necesitaras conocer y saber manejar el lenguaje PHP para que puedas saber donde sustituir cuales cosas, nosotros no podemos ayudarte en esa indole. Es un trabajo largo y tedioso, y deberas leer y aprenderte las funciones del SQLite este link te la describe todas:

http://www.hackingballz.com/herramientas/manual-oficial-de-php/book.sqlite.html

Ahi podras sustituir todas las funciones de MySQL por las que el link anterior te refiera de SQLite... pero te aseguro que es mucho mas rapido y facil si gestionaras que te dispongan un servidor compatible a Moodle, o utilizar otra herramienta similar a Moodle pero que soporte SQLite nativamente.