Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Ответ MySQL: Документация #1072

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
audio
Отправлено: 10 Февраля, 2018 - 18:51:57
Post Id


Забанен


Покинул форум
Сообщений всего: 7
Дата рег-ции: Февр. 2018  


Помог: 0 раз(а)

[+]


PHP:
скопировать код в буфер обмена
  1. CREATE TABLE catalogs (
  2. id_catalog INT(11) NOT NULL,
  3. name TINYTEXT NOT NULL,
  4. PRIMARY KEY (id)
  5. );
  6. INSERT INTO catalogs VALUES (0, ’Процессоры'),
  7. (0, 'Материнские платы'),
  8. (0, 'Видеоадаптеры'),
  9. (0, 'Жесткие диски'),
  10. (0, 'Оперативная память');

Ошибка

SQL запрос:

CREATE TABLE catalogs (
id_catalog INT(11) NOT NULL,
name TINYTEXT NOT NULL,
PRIMARY KEY (id)
)

Ответ MySQL: Документация
#1072 - Ключевой столбец 'id' в таблице не существует
 
 Top
Строитель Модератор
Отправлено: 10 Февраля, 2018 - 19:10:08
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




audio пишет:
Ключевой столбец 'id' в таблице не существует
Замените PRIMARY KEY (id) на PRIMARY KEY (id_catalog)
 
 Top
audio
Отправлено: 10 Февраля, 2018 - 19:31:03
Post Id


Забанен


Покинул форум
Сообщений всего: 7
Дата рег-ции: Февр. 2018  


Помог: 0 раз(а)

[+]


PHP:
скопировать код в буфер обмена
  1. CREATE TABLE catalogs (
  2. id_catalog INT(11) NOT NULL,
  3. name TINYTEXT NOT NULL
  4. PRIMARY KEY (id_catalog)
  5. );
  6. INSERT INTO catalogs VALUES (0, ’Процессоры'),
  7. (0, 'Материнские платы'),
  8. (0, 'Видеоадаптеры'),
  9. (0, 'Жесткие диски'),
  10. (0, 'Оперативная память');

Ошибка

Статический анализ:

Найдено 2 ошибок при анализе.

Ожидалась запятая или закрывающая скобка. (near "(" at position 91)
Неожиданное начало выражения. (near "id_catalog" at position 92)

SQL запрос:

CREATE TABLE catalogs ( id_catalog INT(11) NOT NULL, name TINYTEXT NOT NULL PRIMARY KEY (id_catalog) )

Ответ MySQL: Документация
#1064 - У вас ошибка в запросе. Изучите документацию по используемой версии MySQL на предмет корректного синтаксиса около '(id_catalog)
)' на строке 4
 
 Top
Строитель Модератор
Отправлено: 10 Февраля, 2018 - 19:40:48
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




audio запятую потеряли
CODE (SQL):
скопировать код в буфер обмена
  1. CREATE TABLE catalogs (
  2. id_catalog INT(11) NOT NULL,
  3. name TINYTEXT NOT NULL,
  4. PRIMARY KEY (id_catalog)
  5. );
 
 Top
audio
Отправлено: 10 Февраля, 2018 - 19:43:22
Post Id


Забанен


Покинул форум
Сообщений всего: 7
Дата рег-ции: Февр. 2018  


Помог: 0 раз(а)

[+]


PHP:
скопировать код в буфер обмена
  1. CREATE TABLE catalogs (
  2. id_catalog INT(11) NOT NULL,
  3. name TINYTEXT NOT NULL,
  4. PRIMARY KEY (id_catalog)
  5. );
  6. INSERT INTO catalogs VALUES (0, ’Процессоры'),
  7. (0, 'Материнские платы'),
  8. (0, 'Видеоадаптеры'),
  9. (0, 'Жесткие диски'),
  10. (0, 'Оперативная память');
  11.  

Ошибка

Статический анализ:

Найдено 1 ошибок при анализе.

Ожидалась закрывающая кавычка '. (near "" at position 147)

SQL запрос:

INSERT INTO catalogs VALUES (0, ’Процессоры'), (0, 'Материнские платы'), (0, 'Видеоадаптеры'), (0, 'Жесткие диски'), (0, 'Оперативная память');

Ответ MySQL: Документация
#1064 - У вас ошибка в запросе. Изучите документацию по используемой версии MySQL на предмет корректного синтаксиса около ''),
(0, 'Материнские платы'),
(0, 'Видеоадаптеры'' на строке 1
(Добавление)
PHP:
скопировать код в буфер обмена
  1. CREATE TABLE catalogs (
  2. id_catalog INT(11) NOT NULL,
  3. name TINYTEXT NOT NULL,
  4. PRIMARY KEY (id_catalog)
  5. );
  6. INSERT INTO catalogs VALUES (0, 'Процессоры'),
  7. (0, 'Материнские платы'),
  8. (0, 'Видеоадаптеры'),
  9. (0, 'Жесткие диски'),
  10. (0, 'Оперативная память');


Ошибка

SQL запрос:

CREATE TABLE catalogs (
id_catalog INT(11) NOT NULL,
name TINYTEXT NOT NULL,
PRIMARY KEY (id_catalog)
)

Ответ MySQL: Документация
#1050 - Таблица 'catalogs' уже существует
 
 Top
Строитель Модератор
Отправлено: 10 Февраля, 2018 - 20:00:43
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




audio пишет:
Таблица 'catalogs' уже существует
Ну и в чём проблема?
 
 Top
audio
Отправлено: 10 Февраля, 2018 - 20:03:16
Post Id


Забанен


Покинул форум
Сообщений всего: 7
Дата рег-ции: Февр. 2018  


Помог: 0 раз(а)

[+]


INSERT INTO catalogs VALUES (0, 'Процессоры'),
(0, 'Материнские платы'),
(0, 'Видеоадаптеры'),
(0, 'Жесткие диски'),
(0, 'Оперативная память');
этих полей нет при создании
 
 Top
Строитель Модератор
Отправлено: 10 Февраля, 2018 - 20:14:55
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




audio пишет:
этих полей нет при создании
Так у вас же синтаксис insert не правильный. Вы в запросе на создание таблицы пишете следующее:
CODE (SQL):
скопировать код в буфер обмена
  1. CREATE TABLE IF NOT EXISTS catalogs (
  2.     id_catalog INT(11) NOT NULL,
  3.     name TINYTEXT NOT NULL,
  4.     PRIMARY KEY (id_catalog)
  5. );
То есть, создаёте таблицу catalogs с двумя столбцами: id_catalog и name. Так вот в insert тоже надо указать, в какие столбцы будет произведена запись. А у вас указываются только значения для записи.

В общем всё вместе будет выглядеть так:
CODE (SQL):
скопировать код в буфер обмена
  1. CREATE TABLE IF NOT EXISTS catalogs (
  2.     id_catalog INT(11) NOT NULL,
  3.     name TINYTEXT NOT NULL,
  4.     PRIMARY KEY (id_catalog)
  5. );
  6.  
  7. INSERT INTO catalogs (
  8.     id_catalog, name
  9. ) VALUES (
  10.     1, 'Процессоры'
  11. ), (
  12.     2, 'Материнские платы'
  13. ), (
  14.     3, 'Видеоадаптеры'
  15. ), (
  16.     4, 'Жесткие диски'
  17. ), (
  18.     5, 'Оперативная память'
  19. );
 
 Top
audio
Отправлено: 10 Февраля, 2018 - 20:18:35
Post Id


Забанен


Покинул форум
Сообщений всего: 7
Дата рег-ции: Февр. 2018  


Помог: 0 раз(а)

[+]


в книге нули
я по книге делаю
 
 Top
Строитель Модератор
Отправлено: 10 Февраля, 2018 - 20:19:15
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




audio пишет:
в книге нули
я по книге делаю
Без разницы, ставьте нули.
 
 Top
audio
Отправлено: 10 Февраля, 2018 - 20:31:56
Post Id


Забанен


Покинул форум
Сообщений всего: 7
Дата рег-ции: Февр. 2018  


Помог: 0 раз(а)

[+]


PHP:
скопировать код в буфер обмена
  1.     CREATE TABLE IF NOT EXISTS catalogs (
  2.         id_catalog INT(11) NOT NULL,
  3.         name TINYTEXT NOT NULL,
  4.         PRIMARY KEY (id_catalog)
  5.     );
  6.      
  7.     INSERT INTO catalogs (
  8.         id_catalog, name
  9.     ) VALUES (
  10.         0, 'Процессоры'
  11.     ), (
  12.         0, 'Материнские платы'
  13.     ), (
  14.         0, 'Видеоадаптеры'
  15.     ), (
  16.         0, 'Жесткие диски'
  17.     ), (
  18.         0, 'Оперативная память'
  19.     );


SQL запрос:

INSERT INTO catalogs (
id_catalog, name
) VALUES (
0, 'Процессоры'
), (
0, 'Материнские платы'
), (
0, 'Видеоадаптеры'
), (
0, 'Жесткие диски'
), (
0, 'Оперативная память'
)

Ответ MySQL: Документация
#1062 - Дублирующаяся запись '0' по ключу 'PRIMARY'
 
 Top
Строитель Модератор
Отправлено: 10 Февраля, 2018 - 20:57:49
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




audio, а в "вашей книге" что об этом говорится?
 
 Top
audio
Отправлено: 10 Февраля, 2018 - 21:11:41
Post Id


Забанен


Покинул форум
Сообщений всего: 7
Дата рег-ции: Февр. 2018  


Помог: 0 раз(а)

[+]


что должно все работать
 
 Top
Строитель Модератор
Отправлено: 11 Февраля, 2018 - 01:34:19
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




audio пишет:
что должно все работать
Самое время его выбросить.
 
 Top
Мелкий Супермодератор
Отправлено: 12 Февраля, 2018 - 09:44:18
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Поведение 0 для AUTO_INCREMENT зависит от настройки sql_mode NO_AUTO_VALUE_ON_ZERO

Нормальный способ писать в auto increment - вообще не указывать это поле в insert.
CODE (SQL):
скопировать код в буфер обмена
  1. INSERT INTO catalogs (name) VALUES ('Процессоры'),....


Строитель пишет:
Так вот в insert тоже надо указать, в какие столбцы будет произведена запись. А у вас указываются только значения для записи.

Это допустимая по стандарту форма записи, эквивалент перечисления всех полей таблицы. Не рекомендуется использовать чтобы потом не было мучительно больно добавлять новое поле.


-----
PostgreSQL DBA
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB