Intereting Posts
SQL Select Внутреннее соединение по одному Выберите запрос, но покажите результат с номера записи 3 Эквивалент datetime в java.sql? (есть ли java.sql.datetime?) как добавить более 1000 значений с предложением NOT IN Предотвратить удаление Oracle dupus из-за дубликатов Как оставить несколько ссылок на несколько таблиц в mysql? LOAD DATA из файла CSV, где в качестве escape-символа используется doublequote MySQL: таблица усечений и удаление из таблицы Ошибка: базовый провайдер завершил сбой при открытии. Как его решить? Массовая вставка, обновление в случае конфликта (объемный upsert) на Postgres Извлечь расширенные свойства столбца SQL из LINQ в C # Ошибка 360: невозможно изменить таблицу или представление, используемые в подзапросе Определение имени столбца в качестве параметра в инструкции SELECT? передавая массив как параметр, который будет использоваться в SQL-запросе с помощью команды «IN» Реляционная таблица SQL Plus

Что не так с этим запросом mysql?

Это работает:

CREATE TABLE shoutbox_shout ( shout_id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, user_id INT UNSIGNED NOT NULL DEFAULT 0, shout_date INT UNSIGNED NOT NULL DEFAULT 0, message MEDIUMTEXT NOT NULL, KEY shout_date (shout_date) ) 

… в то время как это:

 CREATE TABLE shoutbox_shout ( shout_id INT UNSIGNED NOT NULL AUTO_INCREMENT, user_id INT UNSIGNED NOT NULL DEFAULT 0, shout_date INT UNSIGNED NOT NULL DEFAULT 0, message MEDIUMTEXT NOT NULL, KEY shout_date (shout_date) ) 

… результаты:

Код ошибки: 1075 – неверное определение таблицы; может быть только один автоматический столбец, и он должен быть определен как ключ

Я добавил первичный ключ, но все еще получаю ошибку.

    Quote Bug # 45987, ERROR 1075 (42000): неверное определение таблицы :

    На самом деле, это не ошибка сервера, просто разница между MyISAM (принятая по умолчанию на этой странице руководства) и движком хранения InnoDB, зарегистрированным в другом месте: http://dev.mysql.com/doc/refman/5.1/en/innodb- автоинкрементным-handling.html

    MyISAM больше не является механизмом по умолчанию; InnoDB есть.

    Также: http://bugs.mysql.com/bug.php?id=60104

    Вывод

    InnoDB не поддерживает AUTO_INCREMENT, но первичный ключ не определен для таблицы, но MyISAM делает. Выберите, какой движок (MyISAM или InnoDB) вы хотите использовать, и соответствующим образом обрабатывайте инструкцию CREATE TABLE.

    Ну, я не эксперт mysql, но

    shout_id INT НЕОПРЕДЕЛЕН НЕ НУЛЬТЫЙ АВТО_ИНКРИЕМ

    является автоматическим приращением, не определяемым как Key ….

    Учитывая многие неясные или вводящие в заблуждение сообщения об ошибках, которые мы испытываем в этом бизнесе, я не могу представить более четкое сообщение об ошибке ….

    +1 для использования unsigned и т. Д., Но вы говорите … это может быть не null … НО по умолчанию его 0 .. и для меня всегда 0? и первичный ключ thats auto_increment НИКОГДА не нул. Ваша симпатичная в хорошем направлении, но делайте это так:

     create table shoutbox_shout ( shout_id int unsigned auto_increment primary key, user_id int unsigned not null, shout_date datetime, message mediumtest not null )engine=innodb; 

    @Brandon_R: Я получаю ту же ошибку, используя командную строку MySQL 5.0.67-community-nt, используя код, как это работает, хотя –

     CREATE TABLE shoutbox_shout ( shout_id INT UNSIGNED NOT NULL AUTO_INCREMENT, user_id INT UNSIGNED NOT NULL DEFAULT 0, shout_date INT UNSIGNED NOT NULL DEFAULT 0, message MEDIUMTEXT NOT NULL, KEY shout_date (shout_date), PRIMARY KEY (shout_id) ); 

    вы ДОЛЖНЫ определить столбец auto_increment в качестве первичного ключа / ключа

     CREATE TABLE shoutbox_shout ( shout_id INT UNSIGNED NOT NULL AUTO_INCREMENT, user_id INT UNSIGNED NOT NULL DEFAULT 0, shout_date INT UNSIGNED NOT NULL DEFAULT 0, message MEDIUMTEXT NOT NULL, KEY shout_date (shout_date), primary key (shout_id) -- primary key ) 

    или

     CREATE TABLE shoutbox_shout ( shout_id INT UNSIGNED NOT NULL AUTO_INCREMENT, user_id INT UNSIGNED NOT NULL DEFAULT 0, shout_date INT UNSIGNED NOT NULL DEFAULT 0, message MEDIUMTEXT NOT NULL, KEY shout_date (shout_date), key (shout_id) -- key ) 

    Вы также должны определить свой тип двигателя – я бы порекомендовал innodb.

    Приятно видеть, что вы используете неподписанные целые типы данных без указания глупой дополнительной ширины экрана!

    Не объясняет ли это короткая ошибка? Столбец AUTO_INCREMENT – если он у вас есть – должен быть ключевым столбцом.

    Как вы демонстрируете, так это устраняет проблему.