Laravel .io, Postgresql: синтаксическая ошибка в или около «,» - PullRequest
0 голосов
/ 26 февраля 2020

Я пытаюсь настроить портал сообщества Laravel .io как общий для [Github] (https://github.com/laravelio/portal).

Однако я сталкиваюсь со следующей ошибкой, когда Я запускаю composer setup в терминале

Синтаксическая ошибка: 7 ОШИБКА: синтаксическая ошибка на или около "," ЛИНИЯ 1: ОБЪЕКТЫ ОБНОВЛЕНИЯ, потоки УСТАНОВКА taggables.created_at = threads ... ^ (SQL: ОБНОВЛЕНИЕ taggables, потоки SET taggables.created_at = threads.created_at, taggables.updated_at = threads.updated_at WHERE taggables.thread_id = threads.id)

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

Это код Php, из которого запускается SQL.

 // Refactor tags
    Schema::rename('tagged_items', 'taggables');

    // Fix timestamps on taggables
    if (! app()->runningUnitTests()) {
        DB::statement('UPDATE taggables, threads SET taggables.created_at = threads.created_at, taggables.updated_at = threads.updated_at WHERE taggables.thread_id = threads.id');
    }

Ответы [ 2 ]

1 голос
/ 27 февраля 2020

ТАК я отправил еще один вопрос с просьбой о помощи для реструктуризации запроса в CTE (общее выражение таблицы), и этот ответ сработал.

update taggables ta
set created_at = th.created_at, updated_at = th.updated_at
from threads th
where ta.thread_id = th.id

Пожалуйста, обратитесь к вопросу и ответам согласно следующий сообщение

Спасибо.

0 голосов
/ 26 февраля 2020

Вам необходимо связать таблицы в предложении FROM или сопоставить свой подзапрос. Один потенциальный путь:

DB::statement('
update threads
set taggables.created_at = threads.created_at, taggables.updated_at = threads.updated_at
from taggables
where taggables.thread_id = threads.id
');


// or perhaps:


DB::statement('
set threads.created_at = ( select taggables.created_at from taggables  where taggables.thread_id = threads.id), threads.updated_at = ( select taggables.updated_at from taggables  where taggables.thread_id = threads.id)
');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...