Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка при создании базы 
V
    Опции темы
progbeg
  Дата 14.6.2007, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 123
Регистрация: 11.7.2006

Репутация: нет
Всего: нет



Пытаюсь создать базу, но выдаётся такая ошибка:
SQL-запрос : 

CREATE TABLE `main` (
`Date` DATE DEFAULT '15.06.2007' NOT NULL ,
`Text` VARCHAR NOT NULL ,
`Np1` INT NOT NULL ,
`Np2p3` INT NOT NULL ,
`NRD` INT NOT NULL ,
INDEX ( `Text` )
)

Ответ MySQL:

You have an error in your SQL syntax near 'NOT NULL, `Np1` INT NOT NULL, `Np2p3` INT NOT NULL, `NRD` INT NOT NULL, INDEX (`' at line 1

Что это значит?
PM MAIL   Вверх
skyboy
Дата 14.6.2007, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 41
Всего: 260



для типа varchar надо задавать верхний предел длины. кажется, вот так: "varchar(255)", где в примере "255" - максимальная преполагаемая длина данных
PM MAIL   Вверх
progbeg
Дата 14.6.2007, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 123
Регистрация: 11.7.2006

Репутация: нет
Всего: нет



А если выставить тип LONGTEXT, то какая максимальная длина?

Добавлено через 2 минуты и 13 секунд
А, 64 Кб.

Добавлено через 4 минуты и 42 секунды
А теперь такая ошибка:
SQL-запрос : 

CREATE TABLE `main` (
`Date` DATE DEFAULT '15.06.2007' NOT NULL ,
`Text` LONGTEXT( 4000 ) NOT NULL ,
`Np1` INT NOT NULL ,
`Np2p3` INT NOT NULL ,
`NRD` INT NOT NULL
)

Ответ MySQL:

You have an error in your SQL syntax near '(4000) NOT NULL, `Np1` INT NOT NULL, `Np2p3` INT NOT NULL, `NRD` INT NOT NULL)' at line 1
Но longtext позволяет длину в 4000 символов.

PM MAIL   Вверх
bawukr
Дата 14.6.2007, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 4.8.2006

Репутация: нет
Всего: нет



Это будет работать:

CREATE TABLE `main` (
`Date` DATE DEFAULT '15.06.2007' NOT NULL ,
`Text` VARCHAR(255) NOT NULL ,
`Np1` INT NOT NULL ,
`Np2p3` INT NOT NULL ,
`NRD` INT NOT NULL ,
KEY `main` (`Text`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;


Несколько замечаний, не знаю какой формат времени принимает ваша база, но по умолчанию он YYYY-MM-DD
т.е. строку
`Date` DATE DEFAULT '15.06.2007' NOT NULL ,
меняем на
`Date` date NOT NULL default '2007-05-16',

Насчет индекса правильней будет создавать 
KEY `main` (`Text`)

И указывать тип базы и кодировку
ENGINE=MyISAM DEFAULT CHARSET=utf8;


На MySQL 5 это работает 100%

Добавлено через 1 минуту и 6 секунд
Для LONGTEXT можно не указывать длину... и не стоит парится по поводу того сколько это будет занимать в базе.
PM MAIL   Вверх
progbeg
Дата 14.6.2007, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 123
Регистрация: 11.7.2006

Репутация: нет
Всего: нет



Я использую MySQL 3.23.52.
Спасибо за замечания насчёт времени.
Но если использовать VARCHAR(255), значит текст, содержащий больше 256 символов нельзя будет забить? А мне надо 4000.
PM MAIL   Вверх
bawukr
Дата 14.6.2007, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 4.8.2006

Репутация: нет
Всего: нет



smile а кто же мешает поставить 4000

VARCHAR(4000),

и все....

Добавлено через 40 секунд
Но как по мне то лучше использовать

mediumtext или longtext
PM MAIL   Вверх
progbeg
Дата 14.6.2007, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 123
Регистрация: 11.7.2006

Репутация: нет
Всего: нет



А если использовать MEDIUMTEXT, то нужно указывать предельную длину?
PM MAIL   Вверх
bawukr
Дата 14.6.2007, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 4.8.2006

Репутация: нет
Всего: нет



нет
PM MAIL   Вверх
progbeg
Дата 14.6.2007, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 123
Регистрация: 11.7.2006

Репутация: нет
Всего: нет



А теперь MySQL вот что выдаёт:
SQL-запрос : 

CREATE TABLE `main` (
`Date` DATE DEFAULT '2007-05-16' NOT NULL ,
`Text` MEDIUMTEXT NOT NULL ,
`Np1` INT NOT NULL ,
`Np2p3` INT NOT NULL ,
`NRD` INT NOT NULL ,
INDEX ( `Text` )
)

Ответ MySQL:

BLOB column 'Text' used in key specification without a key length

PM MAIL   Вверх
bawukr
Дата 14.6.2007, 19:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 4.8.2006

Репутация: нет
Всего: нет



INDEX ( `Text`(333) )
PM MAIL   Вверх
progbeg
Дата 14.6.2007, 19:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 123
Регистрация: 11.7.2006

Репутация: нет
Всего: нет



а 333 - это что за параметр (значение, атрибут и т.п.)?
PM MAIL   Вверх
skyboy
Дата 14.6.2007, 19:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 41
Всего: 260



что такое индекс - в курсе вообще?
так вот, при построении индекса(неуникального ключа) на основе типов данных переменной длины(mediumtext, varchar etc) необходимо указать явно, сколько байт считая с начала надо взять, чтоб можно было считать эту "подстроку" "достаточно уникальной". Например, если у тебя в поле "gender" пол указан строками "мужской"/"женский"(что абсолютно нерационально и просто приведено в пример), то уникальность будет достигаться уже при работе только с первым символом строки(INDEX (`gender`(1))). А при хранении в поле surname фамилии, лучше отвести под ключ длину побольше(хотя бы 5-6 символов - если будет сильно много, может замедлить работу при вставке/удалении - т.е. при перестройке индекса).
PM MAIL   Вверх
progbeg
Дата 14.6.2007, 20:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 123
Регистрация: 11.7.2006

Репутация: нет
Всего: нет



Это мне понятно, только я базу создаю не вручуную пиша запрос, а при помощи панели управления. Так вот, меня и интересует, где именно там нужно вписать параметр. Скриншот прилагаю.

Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  screen.jpg 17,53 Kb
PM MAIL   Вверх
igorold
Дата 15.6.2007, 06:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 557
Регистрация: 22.12.2005
Где: Россия->Урал-& gt;Миасс

Репутация: 5
Всего: 17



Цитата(bawukr @  14.6.2007,  18:16 Найти цитируемый пост)
а кто же мешает поставить 4000

VARCHAR(4000),

и все....


Цитата

Значения в столбцах VARCHAR представляют собой строки переменной длины. Вы можете объявлять, что столбец VARCHAR будет любой длины между 1 и 255, точно как для столбцов типа CHAR. Однако, в отличие от CHAR, значения VARCHAR сохранены, используя ровно столько символов, сколько надо, плюс один байт, чтобы записать длину



--------------------
... у семи нянек 14 сисек ...  
Putin here, Putin there, Putin almost everywhere!
PM MAIL   Вверх
progbeg
Дата 15.6.2007, 08:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 123
Регистрация: 11.7.2006

Репутация: нет
Всего: нет



Спасибо smile
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0576 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.