MySQL не может создать таблицу

0

У меня проблемы с моей mysql. Он подключается к базе данных, но не создает таблицу. Вот пример моего кода:

  $db = new mysqli('localhost', 'user.name', 'user.pass', 'db');

  if ($db === FALSE) {
     echo "ERRROR";
  }   

  $sql = "CREATE TABLE IF NOT EXISTS db (
      ID INT NOT NULL AUTO_INCREMENT,
      NAME VARCHAR(20) NULL
  )";

  $db->query($sql);

  if (mysqli_query($db, $sql)) {
     echo "TABLE CREATED SUCCESSFULLY";
  } else {
    echo "TABLE CREATED UNSUCCESSFULLY";
  }

Я ценю каждый ответ, спасибо за помощь!

Теги:
mysqli

3 ответа

5
Лучший ответ

MySQL допускает только автоинкрементные столбцы, если они определены как ключ. Учитывая, что в столбце помечен ID, что означает, что вы, вероятно, хотите его как первичный ключ, попробуйте следующее:

  $sql = "CREATE TABLE IF NOT EXISTS db (
      ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
      NAME VARCHAR(20) NULL
  )";
  • 0
    да, это работает !!! большое спасибо!
  • 1
    Обязательно отметьте этот ответ как принятый, если он решит вашу проблему. Просто нажмите зеленую галочку рядом с этим ответом.
Показать ещё 1 комментарий
1

Можете ли вы попробовать это.

 $db = new mysqli('localhost', 'user.name', 'user.pass', 'db');

  if ($db === FALSE) {
     echo "ERRROR";
  }   

  $sql = "CREATE TABLE IF NOT EXISTS db (
      ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
      NAME VARCHAR(20) NULL
  )";

  $db->query($sql);

  if (mysqli_query($db, $sql)) {
     echo "TABLE CREATED SUCCESSFULLY";
  } else {
    echo "TABLE CREATED UNSUCCESSFULLY";
  }
1

Поскольку в запросе MySQL есть ошибка

  CREATE TABLE IF NOT EXISTS db (
      ID INT NOT NULL AUTO_INCREMENT,
      NAME VARCHAR(20) NULL;

Неверное определение таблицы; может быть только один автоматический столбец, и он должен быть определен как ключ

исправить:

CREATE TABLE IF NOT EXISTS db (
      ID INT NOT NULL AUTO_INCREMENT,
      NAME VARCHAR(20) NULL,
      key idx_ID(ID)
     );

ПЕРВИЧНЫЙ КЛЮЧ не является обязательным, нормальный ключ тоже может работать.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню