Προς το περιεχόμενο

που έχω λαθος στην mySql?


antonisid

Προτεινόμενες αναρτήσεις

Δημοσ.

Γειά σας,προσπαθώ μέσω του phpMyAdmin να κάνω Import τον κώδικα για την βάση δεδομένων μου,για μια web-εφαρμογή που πειραματίζομαι και μου εμφανίζει το παρακάτω λάθος.

 

#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 '‘0', `email` varchar(100) NOT NULL, `active` int(1) NOT NULL default ‘0', ' at line 5

 

Κώδικας βάσης

 

>CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) NOT NULL auto_increment,
`username` varchar(32) NOT NULL,
`password` varchar(32) NOT NULL,
`online` int(20) NOT NULL default ‘0',
`email` varchar(100) NOT NULL,
`active` int(1) NOT NULL default ‘0',
`rtime` int(20) NOT NULL default ‘0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

INSERT INTO `users` (`id`, `username`, `password`, `online`, `email`, `active`, `rtime`) VALUES
(1, ‘testing’, ‘testing’, 0, ‘[email protected]’, 0, 0);

 

Έχετε καμμιά ιδέα? Προφανώς δεν δέχεται τιμές 0 απ'ότι κατάλαβα!!!!

Δημοσ.

βγαλε τα αυτάκια από το 0 από τα πεδία online, active και rtime. Δηλαδή αντί για default ‘0', γράψε default 0. Τα πεδία online, active και rtime είναι τύπου int, ενώ το 0 με αυτάκια είναι varchar και δεν ταιριάζουν οι τύποι.

Δημοσ.

Δεν δέχεται την τιμή 0 γιατί έχεις ορίσει τα attributes ως ΝΟΤ NULL. Θα πρέπει να το βγάλεις για να δεχτεί την τιμή 0.

 

EDIT:

Γράψε άκυρο. Αυτό που λέει ο καλόγερος πρέπει να είναι.

Δημοσ.

βγαλε τα αυτάκια από το 0 από τα πεδία online, active και rtime. Δηλαδή αντί για default ‘0', γράψε default 0. Τα πεδία online, active και rtime είναι τύπου int, ενώ το 0 με αυτάκια είναι varchar και δεν ταιριάζουν οι τύποι.

Το δοκίμασα αυτό που μου 'πες και μου επέστρεψε το εξής λάθος

 

λάθος

Εντολή SQL:

 

INSERT INTO `users` ( `id` , `username` , `password` , `online` , `email` , `active` , `rtime` )

VALUES ( 1, ‘testing’, ‘testing’, 0, ‘[email protected]’ , 0, 0 ) ;

 

 

Η MySQL επέστρεψε το μύνημα:

 

#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 '@noemail.co.uk’, 0, 0)' at line 2

 

Δοκίμασα να βγάλω και το NOT NULL που πε ο wazza αλλά πάλι δε δούλεψε.

Δημοσ.

Το δοκίμασα αυτό που μου 'πες και μου επέστρεψε το εξής λάθος

 

 

 

Δοκίμασα να βγάλω και το NOT NULL που πε ο wazza αλλά πάλι δε δούλεψε.

 

Ο πίνακας δημιουργήθηκε; Αυτό που σου είπα δούλεψε;

 

Το δοκίμασα αυτό που μου 'πες και μου επέστρεψε το εξής λάθος

 

 

 

Δοκίμασα να βγάλω και το NOT NULL που πε ο wazza αλλά πάλι δε δούλεψε.

 

 

το id είναι auto_increment και πιθανόν αυτό να σου δημιουργεί το πρόβλημα. Προσπάθησε χωρίς να δόσεις τιμή στο πεδίο id. Δοκίμασε:

>
INSERT INTO `users` (`username` , `password` , `online` , `email` , `active` , `rtime` )
VALUES (‘testing’, ‘testing’, 0, ‘[email protected]’ , 0, 0 ) ;

Δημοσ.

Ναι βγάζοντας τ αυτάκια ο πίνακας δημιουργήθηκε παρόλο το σφάλμα που εμφάνισε,απλά είναι άδειος.Δοκίμασα και χωρίς να δώσω αρχική τιμή στο id χωρίς αποτέλεσμα.

Δημοσ.

Πρεπει να φταινει τα αυτάκια πρεπει να βαλεις ' αντι για στα strings.

 

Πολύ σωστή παρατήρηση. Αντικατέστησε όλα τα πλαγιαστά αυτάκια (`) με μονά ή διπλά αυτάκια (' ή ").

Κράτα μας ενήμερους.

Δημοσ.

Μετά απο αρκετή ώρα βρέθηκε λύση.

 

α) Στο INSERT που ορίζουμε τις τιμές (τις τιμές όχι σε πια πεδία να μπουν) ήθελε αντι για ΄ '

β) Αντί για default ‘0' ήθελε default "0"

 

Παραθέτω και τον σωστό κώδικα

 

>CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) NOT NULL auto_increment,
`username` varchar(32) NOT NULL,
`password` varchar(32) NOT NULL,
`online` int(20) NOT NULL default "0" ,
`email` varchar(100) NOT NULL,
`active` int(1) NOT NULL default "0" ,
`rtime` int(20) NOT NULL default "0",
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8; 


INSERT INTO `users` (`id`, `username`, `password`, `online`, `email`, `active`, `rtime`) VALUES
(1, 'testing', 'testing', 0, '[email protected]', 0, 0);

 

Ευχαριστώ για την βοήθειά σας :-D

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...