Intereting Posts
Страница не найдена ошибка при загрузке файла из wp-контента Сайт НЕ НАГРУЖЕН после обновления 3.1 Уникальный идентификатор пользователя Transients для пользователей без регистрации «Удалить доступ к Dashboard Access» делает роль cappabilites отключенной UML-диаграммы WordPress 301 Перенаправление пользовательской иерархии URL-адресов в WordPress Фильтрация пользовательских сообщений по настраиваемым полям (ACF) Отображение признака изображения страницы ребенка ребенка Сортировка пользовательских почтовых запросов WordPress не работает Добавить размер изображения только для одной категории мультимедиа Как я могу использовать заголовок видео более 8 МБ? WordPress отправляет данные о вашем блоге обратно в Automattic или где-то еще? Персонализированная авторская область Где search.php? Отсутствует визуальный редактор после размещения правила перенаправления в файле .htaccess

Синтаксис 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, и вы должны включить хотя бы один КЛЮЧ.

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