MySQL

Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.

Модератор: Bizdelnick

Alukard_aka_404
Сообщения: 51
ОС: GNU/Linux Debian

MySQL

Сообщение Alukard_aka_404 »

Ставил движок, и ему нужно было бд в мускуле,
Создал базу, создал пользователя, а потом когда совмешаю то ошибку выдает:

Код: Выделить всё

mysql -uroot  mysql -e \
> "INSERT INTO db VALUES ('localhost','mydb','mydbadmin','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');"
ERROR 1136 (21S01) at line 1: Column count doesn't match value count at row 1

Предпологаю что сама команда неверна((
Скажите что нетак делаю?
ЗЫ: если что то у меня MySQL 4.1.20
Спасибо сказали:
elektron05
Сообщения: 7
ОС: Fedora Core 8

Re: MySQL

Сообщение elektron05 »

Alukard_aka_404 писал(а):
15.12.2007 22:18
Ставил движок, и ему нужно было бд в мускуле,
Создал базу, создал пользователя, а потом когда совмешаю то ошибку выдает:

Код: Выделить всё

mysql -uroot  mysql -e \
> "INSERT INTO db VALUES ('localhost','mydb','mydbadmin','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');"
ERROR 1136 (21S01) at line 1: Column count doesn't match value count at row 1

Предпологаю что сама команда неверна((
Скажите что нетак делаю?
ЗЫ: если что то у меня MySQL 4.1.20


Проверь количество колонок в ряду, такая ошибка возникает из-за несоответствия количества колонок в запросе, количеству колонок в исходной таблице.
В твоем примере их должно быть 13.
Сколько их на самом деле в таблице?
Спасибо сказали:
Alukard_aka_404
Сообщения: 51
ОС: GNU/Linux Debian

Re: MySQL

Сообщение Alukard_aka_404 »

А можно по подробнее, т.е. пошагово, а то я в линьке недавно
Спасибо сказали:
elektron05
Сообщения: 7
ОС: Fedora Core 8

Re: MySQL

Сообщение elektron05 »

Alukard_aka_404 писал(а):
16.12.2007 00:00
А можно по подробнее, т.е. пошагово, а то я в линьке недавно


Можно.
Вот смотри, к примеру база данных "test".
Создаем в ней таблицу "table", вот такой командой:

Код: Выделить всё

CREATE TABLE `table` (
  `str1` bigint(20) NOT NULL,
  `str2` bigint(20) NOT NULL,
  `str3` varchar(255) default NULL,
  `str4` varchar(255) default NULL
) ENGINE=MyISAM  DEFAULT CHARSET=cp1251

Теперь смотри (str1,str2,str3,str4) это наши поля, или как я их называю столбцы :)

Для того чтобы добавить в нашу таблицу запись необходимо подать вот такую команду:

Код: Выделить всё

INSERT INTO `table` (`str1`, `str2`, `str3`, `str4`) VALUES
(1, 2, 'test_str', 'test_str');

Теперь что в этой команде.
INSERT INTO `table` (`str1`, `str2`, `str3`, `str4`) - перечисляем все или только те поля(столбцы) таблицы "table" в которые необходимо вставить данные. В моем примере перечислены все поля(столбцы).
VALUES
(1, 2, 'test_str', 'test_str')
- эти данные вставляются в таблицу. К этой строке применяются правила. Все данные должны совпадать по последовательности с предыдущим.

Данная команда позволяет вставлять больше данных за один проход, на настоящий момент может быть обработано 50000 записей.

Например, для вставки десяти записей необходимо подать вот такой запрос:

Код: Выделить всё

INSERT INTO `table` (`str1`, `str2`, `str3`, `str4`) VALUES
(1, 2, 'test_str', 'test_str'),
(2, 21, 'test_str1', 'test_str1'),
(3, 22, 'test_str2', 'test_str2'),
(4, 23, 'test_str3', 'test_str3'),
(5, 24, 'test_str4', 'test_str4'),
(6, 25, 'test_str5', 'test_str5'),
(7, 26, 'test_str6', 'test_str6'),
(8, 27, 'test_str7', 'test_str7'),
(9, 28, 'test_str8', 'test_str8'),
(10, 29, 'test_str9', 'test_str9');

Вот такие правила при подаче запросов :)

И еще одно правило, при подаче запроса вставки необходимо находится внутри той базы данных к которой необходимо выполнить запрос!

Теперь проверь как создана твоя таблица, и на основе моего примера создай запрос для вставки данных.
Если не справишься можешь дать ссылку на скрипт.
И имя той таблицы в которую нужно добавить запись.
Лучше все выслать на мой мейл admin(собака)zarinsk.нет
Спасибо сказали:
s0urce
Сообщения: 321
ОС: Arch Linux + WinXP

Re: MySQL

Сообщение s0urce »

elektron05, как у тебя много букоф....
Я так думаю что тов. Alukard_aka_404 просто отношений не создал, а пытается что-то вставить в БД, а не в отношение.
Кстати быстро узнать число столбцов в отношении можно запросом

Код: Выделить всё

SELECT count(COLUMN_NAME) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='your_db_name' AND TABLE_NAME='your_table_name';
Не забудьте вместо your_db_name и your_table_name подставить имена нужной БД и отношения... :D
Спасибо сказали:
Alukard_aka_404
Сообщения: 51
ОС: GNU/Linux Debian

Re: MySQL

Сообщение Alukard_aka_404 »

Наверно я не так вопрос сказал... или я непонимаю....
У меня задача: дать пользователю полное право на бд с локалхоста. В данном случае БД-mydb, а пользователь-mydbadmin
Спасибо сказали:
Аватара пользователя
Voice
Сообщения: 1073
Статус: столлманист
ОС: Debian GNU/Linux

Re: MySQL

Сообщение Voice »

GRANT ALL ON mydb.* TO 'someuser'@'somehost';
Оно?
"И может собственных Платонов и быстрых разумом Невтонов российская земля рождать."
М. В. Ломоносов
Спасибо сказали:
s0urce
Сообщения: 321
ОС: Arch Linux + WinXP

Re: MySQL

Сообщение s0urce »

Alukard_aka_404 писал(а):
17.12.2007 17:18
Наверно я не так вопрос сказал... или я непонимаю....
У меня задача: дать пользователю полное право на бд с локалхоста. В данном случае БД-mydb, а пользователь-mydbadmin
А причём тут предыдущая часть вопроса?
Спасибо сказали:
elektron05
Сообщения: 7
ОС: Fedora Core 8

Re: MySQL

Сообщение elektron05 »

Alukard_aka_404 писал(а):
17.12.2007 17:18
Наверно я не так вопрос сказал... или я непонимаю....
У меня задача: дать пользователю полное право на бд с локалхоста. В данном случае БД-mydb, а пользователь-mydbadmin


Это совсем другой вопрос, здесь вставка данных в таблицу вообще не причем.
Тов. Voice Вам дал правильное решение задачи.
Спасибо сказали: