fix #3653 - mySQL installation failing on Rows reserved word

This commit is contained in:
sbwalker 2024-01-25 10:59:18 -05:00
parent 38a5cc33e8
commit 7c6424e05c
4 changed files with 22 additions and 2 deletions

View File

@ -75,6 +75,14 @@ namespace Oqtane.Database.MySQL
return dr;
}
public override string RewriteName(string name, bool isQuery)
{
if (name.ToLower() == "rows" && isQuery)
{
name = $"`{name}`"; // escape reserved word in SQL query
}
return name;
}
public override DbContextOptionsBuilder UseDatabase(DbContextOptionsBuilder optionsBuilder, string connectionString)
{

View File

@ -66,6 +66,11 @@ namespace Oqtane.Databases
return name;
}
public virtual string RewriteName(string name, bool isQuery)
{
return name;
}
public virtual string RewriteValue(string value, string type)
{
return value;

View File

@ -28,6 +28,8 @@ namespace Oqtane.Databases.Interfaces
public string RewriteName(string name);
public string RewriteName(string name, bool isQuery);
public string RewriteValue(string value, string type);
public void UpdateIdentityStoreTableNames(ModelBuilder builder);

View File

@ -47,7 +47,12 @@ namespace Oqtane.Migrations.EntityBuilders
private string RewriteName(string name)
{
return ActiveDatabase.RewriteName(name);
return RewriteName(name, false);
}
private string RewriteName(string name, bool isQuery)
{
return ActiveDatabase.RewriteName(name, isQuery);
}
private string RewriteValue(string value, string type)
@ -394,7 +399,7 @@ namespace Oqtane.Migrations.EntityBuilders
public void UpdateColumn(string columnName, string value, string type, string condition)
{
var updateSql = $"UPDATE {RewriteSqlEntityTableName(EntityTableName)} SET {RewriteName(columnName)} = {RewriteValue(value, type)} ";
var updateSql = $"UPDATE {RewriteSqlEntityTableName(EntityTableName)} SET {RewriteName(columnName, true)} = {RewriteValue(value, type)} ";
if (!string.IsNullOrEmpty(condition))
{
updateSql += $"WHERE {condition}";