crear tabla en MySql

Post Reply
horacio
Posts: 1270
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

crear tabla en MySql

Post by horacio »

He podido conectarme con el servidor sin problemas mediante ado. Pero al momento de crear una tabla me da error. Esta es la cadena del comando:

oCn : Execute( "create table alumnos( codigo int( 10 ) default 0 primary key auto_increment, nombre varchar(30), fecha_nacimiento varchar(15), Importe decimal( 10, 2 ) Default 0.00 ) TYPE=InnoDB ", "CREATE" )

Sin embargo si la creo sin la sentencia "primary key auto_increment" el comando funciona. Alguien tiene alguna punta sobre este asunto. Desde ya muchas gracias
User avatar
sysctrl2
Posts: 833
Joined: Mon Feb 05, 2007 7:15 pm
Contact:

Post by sysctrl2 »

Prueba cambiando el primary key al final ,



cQry := "CREATE TABLA IF NOT EXISTS ALUMNOS ( "

cQry += "codigo INT(10) DEFAULT 0, "

cQry += "nombre VARCHAR(30) NOT NULL,"

cQry += "auto INT NOT NULL AUTO_INCREMENT,"

cQry += "PRIMARY KEY (codigo))"

cQry += "ENGINE = INNODB"

oCn:Execute( cQry )


Saludos Cordiales..
Cesar Cortes Cruz
SysCtrl Software
Mexico

' Sin +- FWH es mejor "
User avatar
sjingo
Posts: 229
Joined: Sat Mar 18, 2006 3:42 pm
Location: Ibarra-Ecuador

Post by sjingo »

Prueba a quitarle el default 0

así:

oCn : Execute( "create table alumnos( codigo int( 10 ) primary key auto_increment, nombre varchar(30), fecha_nacimiento varchar(15), Importe decimal( 10, 2 ) Default 0.00 ) TYPE=InnoDB ", "CREATE" )

Un Saludo

Marcelo Jingo
horacio
Posts: 1270
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Post by horacio »

Cesar, Marcelo muchas gracias por las respuestas. He probado las dos soluciones que me propusieron pero no funcionan ( por lo menos en mi servidor ). Estoy utilizando MySql 5.0. MI pregunta si esta secuencia de comandos soporta estas instrucciones ( primary key, foreign key, etc. ). No sé si hay otra manera de hacerlo. Seguiré investigando
User avatar
sjingo
Posts: 229
Joined: Sat Mar 18, 2006 3:42 pm
Location: Ibarra-Ecuador

Post by sjingo »

Qué error te devuelve?

Porque probé tu código de la forma como te indiqué y la tabla se creó sin problema en mi base de datos.


Un Saludo

Marcelo Jingo
horacio
Posts: 1270
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Post by horacio »

Gracias marcelo por tu respuesta. Te adjunto el codigo y puedes mirar que está mal. Yo no he podido hacerlo funcionar. Function Creatabla()

Local i
Local cCadena
Local oCn :=CreateObject("ADODB.Connection")
Local aNombres := { { "Pedro", "3222551.00", "1998-10-15" }, { "Juan", "2.21", "1998-10-15" }, { "Tadeo", "3.58", "1998-10-15" } }

oCn : Open( "Driver={MySQL ODBC 3.51 Driver};Server=localhost;Database=alumnos;User=root;Password=root;Option=3;")
oCn : Execute( "drop database if exists alumnos", "DROP" )
oCn : Execute( "create database alumnos", "CREATE" )
oCn : Execute( "create table alumnos( codigo int( 10 ) primary key auto_increment, nombre varchar(30), fecha_nacimiento varchar(15), Importe decimal( 10, 2 ) Default 0.00 ) TYPE=InnoDB ", "CREATE" )

For i := 1 To Len( aNombres )
cCadena := "insert into alumnos(nombre,fecha_nacimiento,importe) values ( '" + aNombres[ i ][ 1 ] + "', '" + aNombres[ i ][ 3 ] + "', " + aNombres[ i ][ 2 ] + " )"
oCn : Execute( cCadena, 'INSERT' ) <- aqui marca error
Next i
oCn : Close()
Return 0

Fichero de error

Path and name: C:\ado\T-REX.EXE (32 bits)
Size: 1,702,400 bytes
Time from start: 0 hours 0 mins 2 secs
Error occurred at: 11/02/07, 17:24:42
Error description: Error ADODB.Connection/16389 E_FAIL: EXECUTE
Args:
[ 1] = C create table alumnos( codigo int( 10 ) primary key auto_increment, nombre varchar(30), fecha_nacimiento varchar(15), Importe decimal( 10, 2 ) Default 0.00 ) TYPE=InnoDB
[ 2] = C CREATE

Stack Calls
===========
Called from: win32ole.prg => TOLEAUTO:EXECUTE(0)
Called from: ado.prg => CREATABLA(213)
Called from: ado.prg => (b)MUESTRASQL(127)
Called from: TOOLBAR.PRG => TTOOLBAR:COMMAND(0)
Called from: window.prg => TMDICHILD:COMMAND(949)
Called from: window.prg => TWINDOW:HANDLEEVENT(0)
Called from: MDICHILD.PRG => TMDICHILD:HANDLEEVENT(0)
Called from: window.prg => _FWH(3159)
Called from: => WINRUN(0)
Called from: window.prg => TMDIFRAME:ACTIVATE(895)
Called from: ado.prg => MAIN(14)
Last edited by horacio on Fri Dec 10, 2010 1:53 am, edited 1 time in total.
User avatar
leandro
Posts: 958
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia
Contact:

Amigo...

Post by leandro »

Amigo prueba con este a mi me funciona de maravilla

Code: Select all


cCommandSql	:= "CREATE TABLE IF NOT EXISTS Cliente (" +;
					"CLI_NUM INTEGER UNSIGNED COMMENT 'Número de cliente'," +;
					"CLI_NOM VARCHAR(70) DEFAULT ''COMMENT 'Nombre del cliente'," +;
					"PRIMARY KEY(CLI_NUM) )" +;
					"ENGINE = InnoDB COMMENT = 'Maestro de clientes';"

Si tienes los permisos para crear tablas?

Espero te sirva..
Saludos
LEANDRO ALFONSO
SISTEMAS LYMA - BASE
Bogotá (Colombia)
[ FWH 19.09 ] [ xHarbour 1.2.3 Intl. (SimpLex) (Build 20190613) ] [ Embarcadero C++ 7.30 for Win32 ]
User avatar
sjingo
Posts: 229
Joined: Sat Mar 18, 2006 3:42 pm
Location: Ibarra-Ecuador

Post by sjingo »

Horacio

Probé tu código tal cual (comentando las líneas de eliminación , creacion de la BD), creando la tabla en mi base de datos y funcionó bien insertando los registros en la tabla creada.

A lo mejor tu problema es de privilegios del usuario sobre la Base de datos o algo así.

Perdona por no poder ayudar más

Un saludo

Marcelo Jingo
horacio
Posts: 1270
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Post by horacio »

Marcelo: Ya lo solucioné. No entiendo bien la lógica del motor. Supuse que eliminando la base de datos se eliminaba la tabla, pero parece que no es así. Si elimino solamente la tabla la crea perfectamente pero si elimino la database y vuelvo a crear la base de datos y la tabla me marca un error. Gracias a todos por haber seguido este hilo y la ayuda que me brindaron
Post Reply