Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[Mysql] Verplaatsen van veld lukt me niet

Pagina: 1
Acties:

  • AW_Bos
  • Registratie: April 2002
  • Nu online

AW_Bos

Liefhebber van nostalgie... 🕰️

Topicstarter
Omdat ik een klein foutje heb gemaakt bij mijn projecten, moet ik een paar velden (of tig INSERT's veranderen wat ff geen optie is) dus gaan verhuizen in de volgorde.
Ik snap het het normaal gezien onnodig en onlogisch is, maar het moet nu eenmaal zo :).

Alleen stuit ik echt op een probleempje, en da's de SYNTAX waar ik niet uit komt..

het betreft de query:
code:
1
ALTER TABLE forumtopics CHANGE COLUMN `timestamp` AFTER `locked`

Ik krijg hierbij de error:
#1064 - 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 'locked' at line 1


Wat is er mis?

De syntax klopt toch? Of zie ik wat over het hoofd?
ALTER [IGNORE] TABLE tbl_name
alter_specification [, alter_specification] ...

| ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}
| CHANGE [COLUMN] old_col_name column_definition
[FIRST|AFTER col_name] \
Ik heb o.a de veldnamen veranderd voor het geval dat ze gereserveerd waren, een definitie van de kolom erbij gezet (VARCHAR (10) ), heb na AFTER zelf COLUMN neergezet maar ik kom er maar niet uit..
Iemand die me een zetje in juiste richting kan helpen?

[ Voor 7% gewijzigd door AW_Bos op 21-08-2007 08:55 ]

Telecommunicatie van vroeger
🚅Alles over spoor en treintjes


  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Syntax errors zijn altijd wel op te lossen met een blik in de docs (zelfs die van mysql :P ).
column_definition clauses use the same syntax for ADD and CHANGE as for CREATE TABLE. Note that this syntax includes the column name, not just its data type. See Section 13.1.5, “CREATE TABLE Syntax”.
Jij hebt in jouw statement dus geen complete 'column_definition' opgegeven. ;)

{signature}


  • AW_Bos
  • Registratie: April 2002
  • Nu online

AW_Bos

Liefhebber van nostalgie... 🕰️

Topicstarter
maar toch heb ik ook VARCHAR(10) toegevoegd in de query, bij het prutsen. Maar leverde ook niks op dan die error?

[ Voor 17% gewijzigd door AW_Bos op 21-08-2007 08:57 ]

Telecommunicatie van vroeger
🚅Alles over spoor en treintjes


  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Ik zie bij 'VARCHAR(10)' toch echt geen column name staan. ;)

{signature}


Verwijderd

Al een ALTER TABLE MODIFY geprobeerd?

  • AW_Bos
  • Registratie: April 2002
  • Nu online

AW_Bos

Liefhebber van nostalgie... 🕰️

Topicstarter
Ik zei dat ik die had toegevoegd aan mijn query.

code:
1
ALTER TABLE forumtopics CHANGE `topicstatus` VARCHAR(10) AFTER `datumtijd`


Ook niks :?

Telecommunicatie van vroeger
🚅Alles over spoor en treintjes


  • BCC
  • Registratie: Juli 2000
  • Nu online

BCC

Hoe kan de volgorde nou ooit van belang zijn voor een insert statement? Daar geef je toch gewoon de values aan? Daarnaast is de inserts aanpassen in Ultraedit in Column mode waarschijnlijk 2 seconden werk.

[ Voor 29% gewijzigd door BCC op 21-08-2007 09:04 ]

Na betaling van een licentievergoeding van €1.000 verkrijgen bedrijven het recht om deze post te gebruiken voor het trainen van artificiële intelligentiesystemen.


  • Confusion
  • Registratie: April 2001
  • Laatst online: 01-03-2024

Confusion

Fallen from grace

Eerst de naam van de column die je wilt wijzigen, gevolgd door de column definitie die de column moet krijgen. Vaak heb je dus twee keer dezelfde columnnaam achter elkaar in een Mysql ALTER TABLE statement.

[ Voor 4% gewijzigd door Confusion op 21-08-2007 09:11 ]

Wie trösten wir uns, die Mörder aller Mörder?


  • AW_Bos
  • Registratie: April 2002
  • Nu online

AW_Bos

Liefhebber van nostalgie... 🕰️

Topicstarter
code:
1
ALTER TABLE forumtopics MODIFY `topicstatus` enum('open', 'gesloten') AFTER `datumtijd`

Does the trick :)..
Thnx..

Telecommunicatie van vroeger
🚅Alles over spoor en treintjes


  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Ariën Clay schreef op dinsdag 21 augustus 2007 @ 09:02:
Ik zei dat ik die had toegevoegd aan mijn query.

code:
1
ALTER TABLE forumtopics CHANGE `topicstatus` VARCHAR(10) AFTER `datumtijd`
Nofi, maar je leest niet. Je hebt hier niet zowel old_col_name als column_definition volledig ingevuld, en dat ondanks de note die ik uit de docs quote, en ondanks de opmerking dat ik geen column name in 'VARCHAR(10)' zie staan.

{signature}


  • remco_k
  • Registratie: April 2002
  • Laatst online: 08:28

remco_k

een cassettebandje was genoeg

Welke versie van MySQL server?
(gezien je link http://dev.mysql.com/doc/refman/5.1/en/alter-table.html zou dat 5.1 zijn... maar toch maar even vragen...)

Dit vraag ik omdat dit in de manual staat van oudere versies:
[quote="http://dev.mysql.com/doc/refman/4.1/en/alter-table.html"]
In MySQL 3.22 or later, to add a column at a specific position within a table row, use FIRST or AFTER col_name. The default is to add the column last. From MySQL 4.0.1 on, you can also use FIRST and AFTER in CHANGE or MODIFY operations.
[/quote]

Lama ... ik zit te slapen... was al *ahum* opgelost.

Verder ben je het probleem niet aan het oplossen maar je bent er omheen aan het draaien. Ontwijkgedrag noem ik dat. De volgorde van kolommen mogen wat mij betreft nooit van belang zijn voor correcte werking van websites / applicaties. (Net zoals de volgorde van records in de tabellen niet van inlvoed zijn op correcte werking).
Ik stel voor dat je het meteen goed oplost: pas je inserts en evt updates aan.

[ Voor 86% gewijzigd door remco_k op 21-08-2007 12:57 ]

Alles kan stuk.


  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
Je insert statements laten dependen op je column layout is ontzettend smerig en foutgevoelig, imo moet je die sowieso aan gaan passen.

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info

Pagina: 1