Исправление имени динамической таблицы Prisma с датой

У меня есть функция запроса MySQL с помощью Prisma в Express.js, и в настоящее время я столкнулся с одной проблемой. Вот функция:


      console.info('Operation successfully.');
      return roleMenu;
    } catch (error) {
      console.error('Error occurred:', error);
      throw error;
    }
  };

Проблема в том, что currentDate интерпретируется как параметр, или его формат не принимается Prisma. Ошибка в терминале vscode:

[2024-03-21 15:37:10] error: {"timestamp":"2024-03-21T08:37:10.512Z","message":"\nInvalid `prisma.$executeRaw()` invocation:\n\n\nRaw query failed. Code: `1064`. Message: `You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '? LIKE app_menu' at line 1`","target":"$executeRaw"}

Когда я пытаюсь использовать статическое имя, это работает. Например, app_menu_20240321.

Я был бы признателен за любую помощь в этом. Спасибо.

Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
0
129
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

$executeRaw не поддерживает использование переменных шаблона (документация).

Однако у вас есть возможность использовать $executeRawUnsafe:


const roleMenu = await prisma.$transaction([
  prisma.$executeRawUnsafe`CREATE TABLE IF NOT EXISTS ${tableName} LIKE app_menu;`,
  // other statements
      ]);

См. документацию здесь: https://www.prisma.io/docs/orm/prisma-client/queries/raw-database-access/raw-queries#executerawunsafe

Как всегда, применяется предупреждение об атаках с внедрением SQL и использовании необработанного пользовательского ввода в любом операторе SQL. Но если вы сами формируете имя таблицы, все будет в порядке.

Другие вопросы по теме