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
Форумы портала PHP.SU :: Версия для печати :: Ответ MySQL: Документация #1072
Форумы портала PHP.SU » » Вопросы новичков » Ответ MySQL: Документация #1072

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

1. audio - 10 Февраля, 2018 - 18:51:57 - перейти к сообщению
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' в таблице не существует
2. Строитель - 10 Февраля, 2018 - 19:10:08 - перейти к сообщению
audio пишет:
Ключевой столбец 'id' в таблице не существует
Замените PRIMARY KEY (id) на PRIMARY KEY (id_catalog)
3. audio - 10 Февраля, 2018 - 19:31:03 - перейти к сообщению
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
4. Строитель - 10 Февраля, 2018 - 19:40:48 - перейти к сообщению
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. );
5. audio - 10 Февраля, 2018 - 19:43:22 - перейти к сообщению
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' уже существует
6. Строитель - 10 Февраля, 2018 - 20:00:43 - перейти к сообщению
audio пишет:
Таблица 'catalogs' уже существует
Ну и в чём проблема?
7. audio - 10 Февраля, 2018 - 20:03:16 - перейти к сообщению
INSERT INTO catalogs VALUES (0, 'Процессоры'),
(0, 'Материнские платы'),
(0, 'Видеоадаптеры'),
(0, 'Жесткие диски'),
(0, 'Оперативная память');
этих полей нет при создании
8. Строитель - 10 Февраля, 2018 - 20:14:55 - перейти к сообщению
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. );
9. audio - 10 Февраля, 2018 - 20:18:35 - перейти к сообщению
в книге нули
я по книге делаю
10. Строитель - 10 Февраля, 2018 - 20:19:15 - перейти к сообщению
audio пишет:
в книге нули
я по книге делаю
Без разницы, ставьте нули.
11. audio - 10 Февраля, 2018 - 20:31:56 - перейти к сообщению
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'
12. Строитель - 10 Февраля, 2018 - 20:57:49 - перейти к сообщению
audio, а в "вашей книге" что об этом говорится?
13. audio - 10 Февраля, 2018 - 21:11:41 - перейти к сообщению
что должно все работать
14. Строитель - 11 Февраля, 2018 - 01:34:19 - перейти к сообщению
audio пишет:
что должно все работать
Самое время его выбросить.
15. Мелкий - 12 Февраля, 2018 - 09:44:18 - перейти к сообщению
Поведение 0 для AUTO_INCREMENT зависит от настройки sql_mode NO_AUTO_VALUE_ON_ZERO

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


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

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

 

Powered by ExBB FM 1.0 RC1