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...
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]
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
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
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
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:
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)
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
saluda al merluzo que puso ese nombre de mi parte
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
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 ^^
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.
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