修正权限
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
import { synchronizeMysqlPartitions } from './partition-storage.mjs';
|
||||
|
||||
export function createMysqlAdapter(context) {
|
||||
const {
|
||||
mkdir,
|
||||
@@ -52,7 +54,7 @@ export function createMysqlAdapter(context) {
|
||||
hasSchemaMetadata = metadataRows.length > 0;
|
||||
existingSchemaVersion = hasSchemaMetadata ? Number(metadataRows[0].schema_version) : null;
|
||||
}
|
||||
if (existingAppTables.length && (!hasSchemaMetadata || existingSchemaVersion !== 15)) {
|
||||
if (existingAppTables.length && (!hasSchemaMetadata || ![15, 16].includes(existingSchemaVersion))) {
|
||||
for (const table of [...mysqlTableNames].reverse()) {
|
||||
await pool.query(`DROP TABLE IF EXISTS \`${table}\``);
|
||||
}
|
||||
@@ -152,6 +154,10 @@ export function createMysqlAdapter(context) {
|
||||
if (Number(metadataRows[0]?.schema_version || 1) < 15) {
|
||||
throw new Error('数据库结构已升级到 v15,请重建开发数据库后重新启动');
|
||||
}
|
||||
if (Number(metadataRows[0]?.schema_version || 1) < 16) {
|
||||
await pool.execute('UPDATE schema_metadata SET schema_version = 16 WHERE id = 1');
|
||||
metadataRows[0].schema_version = 16;
|
||||
}
|
||||
if (Number(metadataRows[0]?.app_version || 1) < 2) {
|
||||
const extension = seed();
|
||||
const connection = await pool.getConnection();
|
||||
@@ -334,7 +340,7 @@ export function createMysqlAdapter(context) {
|
||||
await connection.beginTransaction();
|
||||
const [insert] = await connection.execute(`
|
||||
INSERT IGNORE INTO schema_metadata (id, schema_version, app_version, self_registration_enabled, created_at)
|
||||
VALUES (1, 15, ?, ?, ?)
|
||||
VALUES (1, 16, ?, ?, ?)
|
||||
`, [Number(initialState.meta?.version || 1), initialState.settings?.selfRegistrationEnabled ? 1 : 0, initialState.meta?.createdAt || new Date().toISOString()]);
|
||||
if (insert.affectedRows === 1) {
|
||||
for (const item of buildSeedOperations(initialState)) await connection.execute(item.sql, item.params);
|
||||
@@ -356,6 +362,13 @@ export function createMysqlAdapter(context) {
|
||||
if (!candidateNumberIndexes.length) {
|
||||
await pool.query('ALTER TABLE users ADD UNIQUE KEY uq_users_candidate_number (candidate_number)');
|
||||
}
|
||||
|
||||
const partitionConnection = await pool.getConnection();
|
||||
try {
|
||||
await synchronizeMysqlPartitions(partitionConnection);
|
||||
} finally {
|
||||
partitionConnection.release();
|
||||
}
|
||||
|
||||
const transaction = async operations => {
|
||||
const connection = await pool.getConnection();
|
||||
@@ -363,6 +376,7 @@ export function createMysqlAdapter(context) {
|
||||
await connection.beginTransaction();
|
||||
for (const item of operations) await connection.execute(item.sql, item.params);
|
||||
await connection.commit();
|
||||
await synchronizeMysqlPartitions(connection);
|
||||
} catch (error) {
|
||||
await connection.rollback();
|
||||
throw error;
|
||||
|
||||
Reference in New Issue
Block a user