用日期修复 prisma 动态表名称

问题描述 投票:0回答:1

我在 Express.js 中有一个使用 Prisma 查询 MySQL 的功能,目前我遇到了一个问题。这是函数:


      console.log('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_role_menu' at line 1`","target":"$executeRaw"}

当我尝试使用静态名称时,它有效。例如,app_role_menu_20240321。

如果有任何帮助,我将不胜感激。谢谢你。

mysql express prisma
1个回答
0
投票

$executeRaw
不支持使用模板变量(文档)。

但是,您可以选择使用

$executeRawUnsafe


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

请参阅此处的文档:https://www.prisma.io/docs/orm/prisma-client/queries/raw-database-access/raw-queries#executerawunsafe

一如既往,针对 SQL 注入攻击的警告以及在任何 SQL 语句中使用原始用户输入均适用。但如果您自己创建表名称,那么就可以开始了。

© www.soinside.com 2019 - 2024. All rights reserved.