В месте с php изучаю мускул по книге в ней имеется пример создания таблицы, он почемуто не работает. (Скорее всего расщитан на другую версию мускула) А вот и он, CREATE TABLE user ( usernumber MEDIUMINT(10) DEFAULT '0' NOT NULL AUTO_INCREMENT, userid VARCHAR(8) BINARY NOT NULL, userpassword VARCHAR(20) BINARY NOT NULL, username VARCHAR(30) NOT NULL, userposition VARCHAR(50) NOT NULL, useremail VARCHAR(50) NOT NULL, userprofile TEXT NOT NULL, PRIMARY KEY (userid), UNIQUE usernumber (usernumber) ); Выдает ошибку: ERROR 1067 (42000): Invalid default value for 'usernumber' Ища по форумам в чем дело нашел что вместо '0' нужно написать Null, я так и сделал. Все заработало, но (из книги)" NULL или NOT NULL Поля NOT NULL не допускают NULL-значений. Поля, объявленные как NULL, сохраняют значение, заданное по умолчанию, в случае если в поле записывается NULL. Если значение по умолчанию не указано, то в поле просто сохраняется NULL. Если атрибут не задан, то предполагается NULL" Вопрос. Почему поле объявленное как нул допускает оный ? Как я понял из форумов в моем случае Default вообще лучше не устанавливать, AUTO_INCREMENT сам считает с нуля.
А почему если в том же примере usernumber MEDIUMINT(10) DEFAULT '0' NOT NULL AUTO_INCREMENT, вместо '0' вставить Null не выводится ни какой ошибки ведь поле объявлено как NOT NULL?
Кто знает вменяемые учебники по теории реляционных баз данных и конкретно про Mysql, поделитесь пожалуйста.
Удаление кавычек не помогает. В той же книге есть пример создания другой таблицы CREATE TABLE access_log ( page VARCHAR(250) NOT NULL, userid VARCHAR(8) BINARY NOT NULL, visitcount MEDIUMINT(5) DEFAULT '0' NOT NULL, accessdate TIMESTAMP(14), PRIMARY KEY (userid, page)); Здесь ошибок не выдается все проходит нормально. PS Это таблицы из одной базы данных
Sundro автоинкрементному полю нелзя выставлять значение по умолчанию, отличное от НУЛЛ-а. потому что именно при подаче НУЛЛ-а генерируется новое значение.