BOOT.lv Forums: MYSQL problema - BOOT.lv Forums

Pālekt uz saturu

Lapa 1 no 1

MYSQL problema

#1 Lietotājs ir nesaistē   x820 

  • Grupa: Biedri
  • Raksti: 44
  • Pievienojās: 23-January 08
  • Atrodos:Limbaži

Pievienots 29 January 2009 - 19:17

Palidzat :eek:

Citāts

CREATE TABLE exigo (
id int(11) NOT NULL auto_increment,
1 varchar(255) NOT NULL default '',
2 varchar(255) NOT NULL default '',
3 varchar(255) NOT NULL default '',
4 varchar(255) NOT NULL default '',
5 varchar(255) NOT NULL default '',
6 varchar(255) NOT NULL default '',
7 varchar(255) NOT NULL default '',
8 varchar(255) NOT NULL default '',
9 varchar(255) NOT NULL default '',
10 varchar(255) NOT NULL default '',
11 varchar(255) NOT NULL default '',
12 varchar(255) NOT NULL default '',
PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;


veicot so pieprasijumu izmetas erors

Citāts

#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 'varchar(255) NOT NULL default '', varchar(255) NOT NULL default '', varc' at line 3

Šo rakstu rediģēja x820: 29 January 2009 - 19:18

0

#2 Lietotājs ir nesaistē   bubu 

  • Ikona
  • Grupa: Lietpratējs
  • Raksti: 956
  • Pievienojās: 27-May 07

Pievienots 29 January 2009 - 19:32

Kolonnas nosakumu (arī tabulu/db) nedrīkst sākties ar ciparu.
0

#3 Lietotājs ir nesaistē   binary 

  • Grupa: Biedri
  • Raksti: 762
  • Pievienojās: 02-August 06
  • Atrodos:Rīga

Pievienots 29 January 2009 - 20:21

bubu, lai cik tas stulbi/dumji/nepareizi arī nebūtu, MySQL ļauj veidot arī db/table/column, kuru nosaukumi sastāv tikai no cipariem, tik tad tās ir jāliek backtick (jeb grave accent) charos:
mysql> create database `123`; use `123`; create table `111` (`321` integer); show full columns in `111`;
Query OK, 1 row affected (0.00 sec)

Database changed
Query OK, 0 rows affected (0.04 sec)

+-------+---------+-----------+------+-----+---------+-------+---------------------------------+---------+
| Field | Type	| Collation | Null | Key | Default | Extra | Privileges					  | Comment |
+-------+---------+-----------+------+-----+---------+-------+---------------------------------+---------+
| 321   | int(11) | NULL	  | YES  |	 | NULL	|	   | select,insert,update,references |		 |
+-------+---------+-----------+------+-----+---------+-------+---------------------------------+---------+
1 row in set (0.01 sec)


Bet nu autoram tomēr ieteiktu kolonnu nosaukumus sākt ar burtu...
0

#4 Lietotājs ir nesaistē   eMDiiPii 

  • resident knowledge
  • Ikona
  • Skatīt žurnālu
  • Grupa: Administrators
  • Raksti: 1934
  • Pievienojās: 01-September 06
  • Atrodos:kristaps.lv
  • Intereses:Programmēšana, džezs un klasiskā mūzika

Pievienots 29 January 2009 - 20:35

Skatīt rakstububu, Jan 29 2009, 20:32 PM teica:

Kolonnas nosakumu (arī tabulu/db) nedrīkst sākties ar ciparu.

Tu alojies.
Ir vienkārši jānorāda, ka tu runā par DB lauku, nevis skaitli.
To izdara ieliekot lauku nosaukums `.
mysql> CREATE TABLE aaa (`1` int(11));
Query OK, 0 rows affected (0.07 sec)


Ja atmiņa neviļ, tad arī MSSQL kolona varēja sākties ar ciparu .
0

#5 Lietotājs ir nesaistē   Gints Plivna 

  • Grupa: Biedri
  • Raksti: 80
  • Pievienojās: 21-March 08
  • Intereses:Datu bāzes, jo sevišķi Oracle :)

Pievienots 31 January 2009 - 00:54

Varēt jau tad var tikai tas vienkārši skaļi brēc pēc potenciālas kļūdas:
Ir taču tik viegli apostrofus aizmirst!
mysql> create table a (`1` integer, `2` integer, `3` integer);
Query OK, 0 rows affected (0.06 sec)

mysql> insert into a values (1, 5, 8);
Query OK, 1 row affected (0.05 sec)

mysql> insert into a values (2, 3, 3);
Query OK, 1 row affected (0.05 sec)

mysql> select `2`+ 3, 2+ 3 from a;
+--------+------+
| `2`+ 3 | 2+ 3 |
+--------+------+
|	  8 |	5 |
|	  6 |	5 |
+--------+------+
2 rows in set (0.00 sec)

Atgādina ieteikumus no How to write unmaintainable code piemēram iespēju mainīgo vārdos LlELlEM I burtiem vietā rakstīt mazo L, Iai cilvēki pēc tam pamocās un saprot kurš te bija lZMANĪGAIS gaIvenais tipiņš :)

Nu kur man bija i, kur L? Ar kolonu nosaukumiem kā cipariem ir tieši tāpat.

Gints Plivna
http://datubazes.wordpress.com
0

#6 Lietotājs ir nesaistē   Vilx- 

  • Ikona
  • Skatīt žurnālu
  • Grupa: Administrators
  • Raksti: 6517
  • Pievienojās: 16-April 04
  • Atrodos:Rīga
  • Intereses:Datori

Pievienots 31 January 2009 - 10:10

Vēl arī interesants jautājums ir - kāpēc visas kolonnas ir VARCHAR(255). Vai patiesi tāds ir nepieciešamais modelis šajā vietā, vai arī tas ir viens no tiem variantiem kur "visas kolonnas ir VARCHAR vienkāršības dēļ"... :roll:
0

#7 Lietotājs ir nesaistē   bubu 

  • Ikona
  • Grupa: Lietpratējs
  • Raksti: 956
  • Pievienojās: 27-May 07

Pievienots 01 February 2009 - 16:03

Skatīt rakstubinary, Jan 29 2009, 21:21 PM teica:

bubu, lai cik tas stulbi/dumji/nepareizi arī nebūtu, MySQL ļauj veidot arī db/table/column, kuru nosaukumi sastāv tikai no cipariem, tik tad tās ir jāliek backtick (jeb grave accent) charos:

Es to ļoti labi zinu, bet neuzskatu, ka to vajag autoram zināt un izmantot. Vispār labāk nevienam izmantot.
0

Lapa 1 no 1
  • Tu nevari sākt jaunu tēmu
  • Tu nevari atbildēt uz šo tēmu

1 Lietotāji(s) lasa šo tēmu
0 biedri(s), 1 viesi(s), 0 anonīmi(s) lietotāji(s)