FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour crear tabla en MySql
Posts: 1364
Joined: Wed Jun 21, 2006 12:39 AM
crear tabla en MySql
Posted: Thu Nov 01, 2007 03:39 PM

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

Posts: 1144
Joined: Mon Feb 05, 2007 07:15 PM
crear tabla en MySql
Posted: Thu Nov 01, 2007 05:39 PM

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 "
Posts: 229
Joined: Sat Mar 18, 2006 03:42 PM
crear tabla en MySql
Posted: Thu Nov 01, 2007 07:46 PM

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

Marcelo Jingo
Posts: 1364
Joined: Wed Jun 21, 2006 12:39 AM
crear tabla en MySql
Posted: Thu Nov 01, 2007 09:50 PM

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

Posts: 229
Joined: Sat Mar 18, 2006 03:42 PM
crear tabla en MySql
Posted: Fri Nov 02, 2007 03:16 PM

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

Marcelo Jingo
Posts: 1364
Joined: Wed Jun 21, 2006 12:39 AM
crear tabla en MySql
Posted: Fri Nov 02, 2007 08:27 PM
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)
Posts: 1816
Joined: Wed Oct 26, 2005 02:49 PM
Amigo...
Posted: Fri Nov 02, 2007 11:18 PM
Amigo prueba con este a mi me funciona de maravilla

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 AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Turbo Incremental Link64 6.98 Embarcadero 7.70 ] [ FiveWin 25.01 ] [ xHarbour 64 bits) ]
Posts: 229
Joined: Sat Mar 18, 2006 03:42 PM
crear tabla en MySql
Posted: Sat Nov 03, 2007 05:40 AM

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

Marcelo Jingo
Posts: 1364
Joined: Wed Jun 21, 2006 12:39 AM
crear tabla en MySql
Posted: Sat Nov 03, 2007 01:10 PM

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

Continue the discussion