Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Mysql

Iniciado por Vicente, 07 de Septiembre de 2004, 04:48:07 PM

« anterior - próximo »

Vicente

 Hola,

no va mu relacionado con los juegos la verdad... Tengo una tabla en mysql llamada por ejemplo:

a-b

Si intento:

ALTER TABLE a-b RENAME TO a_b

Me da el siguiente error:

Syntax error or access violation: You have an error in your SQL syntax near -b RENAME TO a_b at line 1

Llevo un monton intentando arreglarlo y buscando en google, pero no se que pasa... :S Si alguien mu puede echar un cable me haría un gran favor. Un saludo!

Vicente

P.D.: si, estoy un poco verde en bases de datos...

sés

 No tengo ni idea, ¿pero no te estará tomando el guión como un signo menos?
La verdad es que usar guiones para nombres de objetos...

[edit]
Supongo que la solución (si es que es eso) será como lo de poner entre comillas los nombres largos o con espacios de MS-DOS.
[/edit]
Soy indeciso... ¿o no?

Vicente

 Eso parece, que me lo está tomando como un signo menos, pero es que no se como leches escaparlo... (el marron del signo menos me lo han dado asi, si es por mi no le pongo ese nombre ;)). Un saludo!

Vicente

Lucas333

 de mysql ando algo verde pero ese RENAME.......me parece q no es del todo correcto
No debe usarse una sentencia ALTER TABLE en una tabla que está siendo referenciada, si se quiere modificar el esquema de la tabla, se recomienda eliminar la tabla y volverla a crear con el nuevo esquema. Cuando MySQL hace un ALTER TABLE, puede que use de manera interna un RENAME TABLE, y por lo tanto, se confundan las restricciones de clave foránea que se refieren a la tabla. Esta restricción aplica también en el caso de la sentencia CREATE INDEX, ya que MySQL la procesa como un ALTER TABLE. pero supongo q alguno de los expertol del canal te lo podran confirmar  :P  

Vicente

 Ya, pero no puedo cargarme la tabla, que se me van a freir esparragos los datos... Necesito cambiar el nombre porque al que referencio desde muchos sitios es al que tiene "_" en vez de "-" (me va a tocar lo otro como me lo huelo...). Un saludo!

Vicente

Lucas333

 solo te puedo decir q yo siempre me tocaba borrar la tabla y volver a crearla eso de RENAME no lo recuerdo .........aunque desde q termine la carrera poco de base de datos he tocado estop tb es verdad  :rolleyes:  

AgeR

 Siempre puedes copiar la tabla a otra con otro nombre, renombrar la nueva (una vez veas que los datos son correctos) y borrar la vieja.
Prueba la solución que te comenta sés también a ver.

PD : Vaya nombrecito de tabla más...  (asco)  

Vicente

 Hola! He probado lo de las compillas (simples y dobles) y nada, a escribir la tabla a golpe de codigos ascii,... nada. Tampoco puedo copiarla, cualquier operacion contra esa tabla peta en el "-". Gracias de todas formas... (como pille al que puso el nombre lo rajo). Un saludo!

Vicente

CoLSoN2

 saluda al merluzo que puso ese nombre de mi parte
Manuel F. Lara
Descargar juegos indie  - blog sobre juegos indie y casual
El Desarrollo Personal.com  - blog sobre productividad, motivación y espíritu emprendedor

Repoker

 Prueba con el carácter de escape "\", tal vez es que te lo está interpretando como un símbolo y no como texto, que es lo que quieres... si cuela te ahorras un currito :P

shephiroth

 Muy buenas.

Olvidaros del -, q no tiene nada q ver.

[MODE TUTOR ON]

ALTER TABLE se utiliza para modificar la estructura de una tabla, no se puede cambiar su nombre. Es decir, solo nos deja operar con 5 opcion que son:
ADD COLUMN
ALTER COLUMN
DROP COLUMN
ADD CONSTRAINT
DROP CONSTRAINT

Para solucionar el problema te recomiendo hacer lo siguiente

1) Crear una tabla con el nuevo nombre con la misma estructura interna (si hay algo diferente no funcionará), mucho ojo con el orden de los campos

2) Copiar los datos con la siguiente instruccion:

INSERT INTO nombre_tabla_nuevo (campos y demas) FROM SELECT * FROM nombre_tabla_vieja

[EDITADO ON]
Si el orden de los campos no es el mismo, en vez de utilizar select * pones los campos en el orden oportuno y ya esta  :D
[EDITADO OUT]

Si quieres comprueba que estan todos los datos y no se ha dejado ninguna por ejemplo con esta linea:

SELECT (select count(*) from tabla_vieja) AS VIEJA, (select count(*) from tabla_nueva) AS NUEVA

Si te sale el mismo numero en ambas, tienes todos los registros en orden xDD

[MODE TUTOR OFF]

Weno, y de aqui a la cama, que ya trabaje suficiente desempolvando los viejos libros (weno, no tan viejos, de hace 6 meses xDD)

SALUDOS ^^

Jond

 Hola Vicente,

la sql que intentas ejecutar si que es correcta,
lo que ocurre que cuando quieres hacer
referencia a una tabla con caracteres extraños
en su nombre debes hacelo entre acento
abierto (no entre comillas simples)  `

El que esta a la derecha de la p.

Se saca pulsando a la tecla del acento y luego
un espacio.

Por lo que la sentencia seria:

ALTER TABLE `a-b` RENAME TO a_b

Por lo menos asi, si que me funciona
en mi versión de mysql.

Vicente

 Hola! Quien iba a pensar que el caracter para los caracteres extraños fuera `  O_O

Ya funciona! La de curro que me habéis ahorrado, muchisimas gracias a todos. Estais invitados a una ciberbirra ;)

Un saludo!

Vicente






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.