Проблемма с CREATE TABLE

  • Автор темы Автор темы serii_v
  • Дата начала Дата начала

serii_v

Новичок
Проблемма с CREATE TABLE

Хочу создать таблицу через MySQL Command Line Client запросом CREATE TABLE male(username VARCHAR(12),firstname VARCHAR(50),lastname VARCHAR(50),hash VARCHAR, и т.д.);, а он жалуется: ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'month TINYINT UNSIGNED,day TINYINT UNSIGNED,year SMALLINT UNSIGNED,email VARCHAR' at line 1. У меня версия 5.0.
 
Тебе же написали, что делать: ищи ошибку в синтаксисе запроса.
[offtop]
а вместо полей ГОД, МЕСЯЦ, ЧИСЛО нельзя использовать поле типа ДАТА?
[/offtop]
 
Названия таблиц и полей в MySQL НАДО заключать в кавычки-апострофы
CREATE TABLE `male` (`username` VARCHAR(12), ....)
И, собственно, ругается он у тебя на то, что ты используешь зарезервированное слово в качестве названия поля таблицы....
 
Я, кстати, использую префиксы во всех именах столбцов, указывающие тип поля. Как побочный эффект - имя не совпадет с зарезервированным словом. Например: i_month, dt_create, i_order и т.п.
 
Он всё равно ругается. Вот строка запроса:
CREATE TABLE 'male'('username' VARCHAR(12),'firstname' VARCHAR(50),'lastname' VARCHAR(50),'hash' VARCHAR,'d_month' TINYINT UNSIGNED,'d_day' TINYINT UNSIGNED,'d_year' SMALLINT UNSIGNED,'email' VARCHAR(50),'country' VARCHAR(30),'state' VARCHAR(30),'city' VARCHAR(30),'street' VARCHAR(120),'zip' VARCHAR,'phone' VARCHAR,'height' SMALLINT UNSIGNED,'weight' SMALLINT UNSIGNED,'eye' TINYINT UNSIGNED,'hair' TINYINT UNSIGNED,'religion' TINYINT UNSIGNED,'marital' TINYINT UNSIGNED,'children' TINYINT UNSIGNED,'employment' VARCHAR(60),'smoke' TINYINT UNSIGNED,'drink' TINYINT UNSIGNED,'aboutme' TEXT,'lookingfor' TEXT,'balance' SMALLINT,'payment' SMALLINT UNSIGNED);
 
serii_v
А как он ругается? Он говорит: "Фу! Плохой запрос! Самое слабое звено!"?
 
А вот так: :)
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' 'male'('username' VARCHAR(12),'firstname' VARCHAR(50),'lastname' VARCHAR(50),'ha' at line 1
 
serii_v

кавычки бывают трёх видов
1. '
2. "
3. `

для твоего запроса нужны кавычки третьего вида ...
 
Да всё равно результат тот же. Вот строка:
CREATE TABLE `male`(`username` VARCHAR(12),`firstname` VARCHAR(50),`lastname` VARCHAR(50),`hash` VARCHAR,`d_month` TINYINT UNSIGNED,`d_day` TINYINT UNSIGNED,`d_year` SMALLINT UNSIGNED,`email` VARCHAR(50),`country` VARCHAR(30),`state` VARCHAR(30),`city` VARCHAR(30),`street` VARCHAR(120),`zip` VARCHAR,`phone` VARCHAR,`height` SMALLINT UNSIGNED,`weight` SMALLINT UNSIGNED,`eye` TINYINT UNSIGNED,`hair` TINYINT UNSIGNED,`religion` TINYINT UNSIGNED,`marital` TINYINT UNSIGNED,`children` TINYINT UNSIGNED,`employment` VARCHAR(60),`smoke` TINYINT UNSIGNED,`drink` TINYINT UNSIGNED,`aboutme` TEXT,`lookingfor` TEXT,`balance` SMALLINT,`payment` SMALLINT UNSIGNED);
 
`phone` VARCHAR, `hash` VARCHAR
думать когда начнём?

-~{}~ 28.12.05 11:22:

serii_v
установи какую-нить тулзу для работы с базами, например, mysql front. Визуально создавая таблицу, определяешь количество полей их типы, потом смотришь какой sql запрос эта тулза отправила mysql'ю и так учишься.
 
Поставил MySQL front. Вроде всё сделал правильно, но он выдаёт ошибку:
Ошибка при выполнении (1064). Ответ от сервера:
You have an error in your SQL syntax; chech the manual that corresponds to your MySQL server version for the right syntax to use near 'NOT NULL, `d_month` tinyint unsigned NOT NULL DEFAULT '0',
 
Сверху