我有一个数据库,其中有一个用于我的Web应用程序的用户。该用户只有SELECT、DROP和CREATE权限。
我用fastAPI编写了一个小的API,它接受文件并对它做一些小的清理工作。
(EDIT SQL文件如下所示:
CREATE TABLE IF NOT EXISTS users (
id INT PRIMARY KEY,
name varchar(255) NOT NULL,
email varchar(255) NOT NULL UNIQUE,
password varchar(255) NOT NULL
);
INSERT into users (id, name, email, password) VALUES (1, 'test', 'test@gmail.com', 'password');
CREATE TABLE IF NOT EXISTS books (
id INT PRIMARY KEY,
name varchar(255) NOT NULL,
price int not null,
authorName varchar(255) NOT NULL
);
create table if not exists orders (
id INT PRIMARY KEY,
userId INT NOT NULL,
bookId INT NOT NULL,
quantity INT NOT NULL
);
create table if not exists adventureBookings(
id INT PRIMARY KEY,
country varchar(255) NOT NULL,
city varchar(255) NOT NULL,
price int not null
);
它被读取,然后保存为字符串。然后,具有有限权限的用户webApp将一次执行所有这些SQL-Queries,但由于不允许他执行插入操作,因此数据库将抛出错误,SQL-Skript的执行将停止
因此,将执行为用户创建表,然后执行不允许的插入操作,并且不会创建表books、orders和adventureBookings。
问题是:是否有一个设置mysql服务器只是忽略拒绝的错误,或者我可以做些什么来确保所有的表将得到执行,或者我应该尝试其他的东西?
1条答案
按热度按时间klsxnrf11#
您可以在执行前剖析SQL陈述式,或忽略例外状况: