Пожалуйста, что не так с синтаксисом MySQL

#mysql #sql #string #xampp #create-table

#mysql #sql #строка #xampp #создать таблицу

Вопрос:

 CREATE TABLE users(
    user_id int(11)  auto_increment primary key,
    f_name VARCHAR(255) NOT NULL,
    l_name VARCHAR(255) not NULL,
    u_name VARCHAR NOT NULL UNIQUE,
    phone int(15) not null UNIQUE,
    email VARCHAR not null UNIQUE,
    pwd VARCHAR not null,
    confpwd VARCHAR not null,
    state VARCHAR(255),
    lga VARCHAR(255) DEFAULT null,
    preference enum('m','f','mf') DEFAULT 'mf',
    gender enum('m','f') DEFAULT null,
    profile_image VARCHAR(255),
    bio VARCHAR(1000) DEFAULT null,
    forgot_pwd_code VARCHAR (255),
    forgot_pwd_time TIMESTAMP DEFAULT NULL,
    created_at timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    hobbies_id int(11),
     FOREIGN KEY (hobbies_id) REFERENCES hobbies (userId) ON DELETE NO ACTION ON UPDATE NO ACTION
)  ENGINE=InnoDB DEFAULT CHARSET=latin1;
  

я продолжаю получать эту ошибку

У вас ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MariaDB, на предмет правильного синтаксиса для использования рядом с ‘NOT NULL UNIQUE, phone int (15) not null UNIQUE, email VARCHAR not null’ в строке 5

Комментарии:

1. Вам нужно указывать значение для VARCHAR каждый раз, а не только время от времени. Вы не должны указывать значение для int.

Ответ №1:

Для VARCHAR типов данных требуется длина (которая представляет максимально допустимое количество символов) — ее непредоставление является синтаксической ошибкой.

Это верно не только для столбца uname , но также для pwd и confpwd . Каждый из этих столбцов должен быть объявлен как varchar(<N>) , где <N> — длина столбца, а не просто varchar .