Синтаксис dbDelta ALTER TABLE?

Из-за некоторых изменений в БД мне нужно изменить таблицу, чтобы добавить к ней один столбец, но даже несмотря на то, что функция запущена, таблица не изменяется. Вот код ALTER TABLE, который я написал

$sql = "ALTER TABLE " . $packagetable . " ADD COLUMN price decimal(14,2) NOT NULL AFTER description;"; dbDelta($sql); 

Я не смог найти синтаксис для ALTER TABLE с dbDelta в любом месте в Интернете. EDIT: посмотрев инструкцию ALTER TABLE в плагине форм тяжести, я обновил оператор в одной строке.

Solutions Collecting From Web of "Синтаксис dbDelta ALTER TABLE?"

Вы неправильно использовали функцию dbDelta .

Весь смысл этой функции заключается в том, что вы передаете команду SQL создания таблицы.

Если таблица не существует, она создает ее.

Если таблица существует, но не соответствует , она изменяется до тех пор, пока она не будет соответствовать. Это включает в себя добавление и обновление столбцов, индексов и других аспектов.

Итак, что вы хотите сделать, это запустить dbDelta и предоставить ему таблицу sql sql, а не таблицу alter sql.

См. Здесь, чтобы «Codex» приступил к добавлению обновления / изменения в таблицу с помощью dbDelta

Но это идет дальше! dbDelta – это придирчивая функция, вы не можете просто поставить какой-либо SQL-запрос там, он должен быть отформатирован соответствующим образом

Вот что говорит код на той же странице:

  1. Вы должны поместить каждое поле в свою строку в свой оператор SQL.
  2. У вас должно быть два пробела между словами PRIMARY KEY и определением вашего первичного ключа.
  3. Вы должны использовать ключевое слово KEY, а не его синоним INDEX, и вы должны включить хотя бы один КЛЮЧ.
  4. Вы не должны использовать какие-либо апострофы или обратные ссылки вокруг имен полей.

И от другого:

Функция dbDelta

Как я упоминал ранее в одной из своих статей, функция dbDelta имеет возможность исследовать текущую структуру таблицы, сравнивает ее с желаемой структурой таблицы и добавляет или изменяет таблицу по мере необходимости, поэтому она может быть очень полезна для обновлений нашей плагин. Однако, в отличие от многих функций WordPress, функция dbDelta является самой придирчивой и сложной. Для того, чтобы функция dbDelta работала, необходимо выполнить несколько критериев.

  1. Вы должны поместить каждое поле в свою строку в свой оператор SQL.
  2. У вас должно быть два пробела между словами PRIMARY KEY и определением вашего первичного ключа.
  3. Вы должны использовать ключевое слово KEY, а не его синоним INDEX, и вы должны включить хотя бы один КЛЮЧ.

Ну, вышеуказанные критерии кажутся легко достижимыми. Но подождите, пока он не ударит вас.