| Subiectul anterior :: Subiectul următor |
| Autor |
Mesaj |
kyron
Data înscrierii: 16/Sep/2004
Mesaje: 534
Locație: Bucuresti
|
| Trimis: Vin Noi 09, 2007 2:32 pm Titlul subiectului: Schimbare in MySQL ? |
|
|
In mysql ultima versiune am observat o chestie ciudata.
Cod:
CREATE TABLE IF NOT EXISTS `test1` (
`id` int(11) NOT NULL auto_increment,
`text` text NOT NULL,
`text2` varchar(20) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
Un query de forma:
Cod:
insert into test1(id,text) values('','ceva')
sau
Cod:
insert into test1 set text = 'ceva'
arunca urmatoarea eroare : #1364 - Field 'text2' doesn't have a default value
Cu alte cuvinte, nu mai pot sa adaug o inregistrare, fara a insirui in query toate campurile tabelei, sau fara sa declar fiecarui camp o valoare default.
Asta se intampla in mysql 5.0.45.
In 5.0.27 nu-mi da eroarea respectiva.
Stie cineva mai multe ? |
|
| Sus |
|
flubber
Data înscrierii: 14/Mar/2006
Mesaje: 237
Locație: Bucuresti
|
| Trimis: Vin Noi 09, 2007 4:54 pm Titlul subiectului: |
|
|
pai toate campurile sunt not null, nu-i dai o valoare, el incearca sa ia default value
problema e de ce apar diferite mesaje intre versiuni? |
|
| Sus |
|
kyron
Data înscrierii: 16/Sep/2004
Mesaje: 534
Locație: Bucuresti
|
| Trimis: Vin Noi 09, 2007 5:03 pm Titlul subiectului: |
|
|
| da, campurile sunt not null dupa cum se vede. Insa pana acum nu au fost probleme. Ar fi o restrictie prea severa din punctul meu de vedere specificarea obligatorie a unei valori default pentru fiecare camp. |
|
| Sus |
|
flubber
Data înscrierii: 14/Mar/2006
Mesaje: 237
Locație: Bucuresti
|
| Trimis: Vin Noi 09, 2007 5:27 pm Titlul subiectului: |
|
|
nu cred ca te constrange el in vre-un fel sa-i dai default value; raspunsul e in documentatie ( sau ar trebui sa fie )
cred ca se uita dupa default value pentru ca nu i-ai precizat nici o valoare si iti arunca eroarea aia |
|
| Sus |
|
Pirahna
Data înscrierii: 22/Aug/2004
Mesaje: 4355
Locație: la birou
|
| Trimis: Vin Noi 09, 2007 5:56 pm Titlul subiectului: |
|
|
eu pun deobicei valoarea NULL ca default, in caz ca difera prostiile.
si mie mi s-a intamplat dar nu am fost atent la versiuni, am dat vina pe mine :lol: |
|
| Sus |
|
kyron
Data înscrierii: 16/Sep/2004
Mesaje: 534
Locație: Bucuresti
|
| Trimis: Vin Noi 09, 2007 6:21 pm Titlul subiectului: |
|
|
| de obicei se recomanda sa se foloseasca "not null", cu exceptia situatiilor cand chiar ai nevoie de un camp null. Am urmat sfatul si acum trebuie sa-mi fac downgrade de mysql :) |
|
| Sus |
|
carco
Data înscrierii: 27/Mai/2004
Mesaje: 2796
Locație: Bucuresti
|
| Trimis: Vin Noi 09, 2007 7:59 pm Titlul subiectului: |
|
|
| Mie mi se pare logic, din moment ce-i specifici "not null", atunci are nevoie de o valoare default, so, pune-i default value "", 0, sau ce crezi tu (in definitia tabelei: `text` text NOT NULL DEFAULT '' ) si nu o sa mai tipe atunci cand nu specifici o valoare. |
|
| Sus |
|
dechim
Data înscrierii: 10/Mai/2005
Mesaje: 549
Locație: Drobeta Turnu Severin
|
| Trimis: Vin Noi 09, 2007 8:02 pm Titlul subiectului: |
|
|
| Insisti degeaba, bug era pana acum, corect este sa apara eroare. Ai spus ca in acel camp (text2) vei introduce obligatoriu ceva, e normal sa te avertizeze. Pune-i default si se rezolva. |
|
| Sus |
|
kyron
Data înscrierii: 16/Sep/2004
Mesaje: 534
Locație: Bucuresti
|
| Trimis: Dum Noi 11, 2007 4:23 pm Titlul subiectului: |
|
|
| Logic e corect, nici n-am spus altceva. Ciudat e ca s-a observat "logica" abia in pragul versiunii 6, fara nici o portita de backward compatibility. |
|
| Sus |
|
ebogdan
Data înscrierii: 27/Iul/2006
Mesaje: 94
|
| Trimis: Lun Noi 12, 2007 1:07 pm Titlul subiectului: |
|
|
| Eu am observat chestia asta cu Not Null si la Mysql 4 si la 5 mereu, si am lucrat cu o gramada de sub-versiuni... |
|
| Sus |
|
PHPRomania Bot
Bot Member
Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google |
| Trimis: Mie Dec 26, 2007 7:01 pm Titlul subiectului: Ad |
|
|
|
|
|
| Sus |
|
| |