Foros del Web » Programando para Internet » PHP »

error al crear tablas mysql

Estas en el tema de error al crear tablas mysql en el foro de PHP en Foros del Web. Hola, tengo el siguiente método: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original public function crearDb ( ) {         $sql = "   ...
  #1 (permalink)  
Antiguo 05/04/2011, 12:48
Avatar de destor77  
Fecha de Ingreso: noviembre-2004
Ubicación: Gálvez, Santa Fe, Argentina
Mensajes: 2.654
Antigüedad: 19 años, 5 meses
Puntos: 43
error al crear tablas mysql

Hola,
tengo el siguiente método:
Código PHP:
Ver original
  1. public function crearDb() {
  2.         $sql = "
  3.                --
  4.                -- Estructura de tabla para la tabla actualizaciones
  5.                --
  6.  
  7.                CREATE TABLE actualizaciones (
  8.                  id int(11) NOT NULL AUTO_INCREMENT,
  9.                  seccion varchar(255) NOT NULL,
  10.                  actualizacion datetime NOT NULL,
  11.                  PRIMARY KEY (id)
  12.                ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
  13.  
  14.                -- --------------------------------------------------------
  15.  
  16.                --
  17.                -- Estructura de tabla para la tabla core_configuracion
  18.                --
  19.  
  20.                CREATE TABLE core_configuracion (
  21.                  id int(11) NOT NULL,
  22.                  titulo varchar(255) NOT NULL,
  23.                  descripcion text,
  24.                  keywords text,
  25.                  email varchar(255) DEFAULT NULL,
  26.                  user_email varchar(255) DEFAULT NULL,
  27.                  pass_email varchar(255) DEFAULT NULL,
  28.                  host_email varchar(255) DEFAULT NULL,
  29.                  port_email varchar(255) DEFAULT NULL,
  30.                  themes varchar(255) DEFAULT NULL,
  31.                  lenguajes_id int(11) NOT NULL DEFAULT '1',
  32.                  PRIMARY KEY (titulo,lenguajes_id),
  33.                  KEY fk_core_configuracion_core_lenguajes1 (lenguajes_id)
  34.                ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='contiene la configuración del sitio';
  35.  
  36.                -- --------------------------------------------------------
  37.  
  38.                --
  39.                -- Estructura de tabla para la tabla core_errores
  40.                --
  41.  
  42.                CREATE TABLE core_errores (
  43.                  id int(11) NOT NULL AUTO_INCREMENT,
  44.                  fecha datetime DEFAULT NULL,
  45.                  error text,
  46.                  cod_error varchar(80) DEFAULT NULL,
  47.                  linea int(11) DEFAULT NULL,
  48.                  accion varchar(255) DEFAULT NULL,
  49.                  controlador varchar(255) DEFAULT NULL,
  50.                  core_users_id int(11) NOT NULL,
  51.                  PRIMARY KEY (id,core_users_id),
  52.                  KEY fk_core_errores_core_users1 (core_users_id)
  53.                ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='contiene los errores generados' AUTO_INCREMENT=1 ;
  54.  
  55.              
  56.            ";
  57.         $config = Config::singleton();
  58.  
  59.         $conexion= mysql_connect($config->get('dbhost'), $config->get('dbuser'), $config->get('dbpass'), $config->get('dbname'));
  60.     mysql_select_db($config->get('dbname'), $conexion);
  61.         if(!mysql_query($sql)){
  62.             $consulta = mysql_error();
  63.         }
  64.         else{
  65.             $consulta = true;
  66.         }
  67.         mysql_close();
  68.        
  69.  
  70.         return $consulta;
  71.     }

cuando le ejecuto me tira este error:
Cita:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CREATE TABLE core_configuracion (
id int(11) NOT NULL,
' at line 18
lo mas raro es que si yo copio toda la query y le pego en el phpmyadmin, me crea las tablas sin ningun problema. Donde esta el error????
desde ya muchas gracias
  #2 (permalink)  
Antiguo 05/04/2011, 12:57
Avatar de luis010182  
Fecha de Ingreso: julio-2009
Ubicación: Argentina - Capital Federal
Mensajes: 382
Antigüedad: 14 años, 9 meses
Puntos: 27
Respuesta: error al crear tablas mysql

debe mandar un sql a la vez, ahi le estas enviando 3, osea que crea de una las tablas. y te va a funcionar.
Otra si los datos los estas tomando de un archivo lo podes hacer con las funcion exec() de php, y le mandas los comandos mysql como si estuvieras en al linea de comando. pero lo mas facil es separa los sql.
  #3 (permalink)  
Antiguo 06/04/2011, 08:50
Avatar de destor77  
Fecha de Ingreso: noviembre-2004
Ubicación: Gálvez, Santa Fe, Argentina
Mensajes: 2.654
Antigüedad: 19 años, 5 meses
Puntos: 43
Respuesta: error al crear tablas mysql

Cita:
Iniciado por luis010182 Ver Mensaje
debe mandar un sql a la vez, ahi le estas enviando 3, osea que crea de una las tablas. y te va a funcionar.
Otra si los datos los estas tomando de un archivo lo podes hacer con las funcion exec() de php, y le mandas los comandos mysql como si estuvieras en al linea de comando. pero lo mas facil es separa los sql.
perdón por la insistencia, pero yo veo que mando una sola sql:
Código PHP:
Ver original
  1. if(!mysql_query($sql)){

o no queda otra que armar un sql por cada tabla a crear (lo que me parece ilogico...)

salu2
  #4 (permalink)  
Antiguo 06/04/2011, 14:41
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: error al crear tablas mysql

Solo puedes mandar un query por cada llamada a mysql_query, si deseas ejecutar muchas consultas necesitas la extensión mysqli y usar mysqli_multi_query.

Saludos.
  #5 (permalink)  
Antiguo 06/04/2011, 17:17
Avatar de luis010182  
Fecha de Ingreso: julio-2009
Ubicación: Argentina - Capital Federal
Mensajes: 382
Antigüedad: 14 años, 9 meses
Puntos: 27
Respuesta: error al crear tablas mysql

Cita:
Iniciado por destor77 Ver Mensaje
perdón por la insistencia, pero yo veo que mando una sola sql:
Código PHP:
Ver original
  1. if(!mysql_query($sql)){

o no queda otra que armar un sql por cada tabla a crear (lo que me parece ilogico...)

salu2
Lo que dice GatorV es verdad.
Pero respecto a lo que te decia antes, los sql teminan con punto y coma. Osea que vos tenes 3 sql

1 -

CREATE TABLE actualizaciones (
id int(11) NOT NULL AUTO_INCREMENT,
seccion varchar(255) NOT NULL,
actualizacion datetime NOT NULL,
PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;


2 -
CREATE TABLE core_configuracion (
id int(11) NOT NULL,
titulo varchar(255) NOT NULL,
descripcion text,
keywords text,
email varchar(255) DEFAULT NULL,
user_email varchar(255) DEFAULT NULL,
pass_email varchar(255) DEFAULT NULL,
host_email varchar(255) DEFAULT NULL,
port_email varchar(255) DEFAULT NULL,
themes varchar(255) DEFAULT NULL,
lenguajes_id int(11) NOT NULL DEFAULT '1',
PRIMARY KEY (titulo,lenguajes_id),
KEY fk_core_configuracion_core_lenguajes1 (lenguajes_id)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='contiene la configuración del sitio';


3-
CREATE TABLE core_errores (
id int(11) NOT NULL AUTO_INCREMENT,
fecha datetime DEFAULT NULL,
error text,
cod_error varchar(80) DEFAULT NULL,
linea int(11) DEFAULT NULL,
accion varchar(255) DEFAULT NULL,
controlador varchar(255) DEFAULT NULL,
core_users_id int(11) NOT NULL,
PRIMARY KEY (id,core_users_id),
KEY fk_core_errores_core_users1 (core_users_id)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='contiene los errores generados' AUTO_INCREMENT=1 ;

Etiquetas: mysql, tablas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:38.