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; 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) public override DbContextOptionsBuilder UseDatabase(DbContextOptionsBuilder optionsBuilder, string connectionString)
{ {

View File

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

View File

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

View File

@ -47,7 +47,12 @@ namespace Oqtane.Migrations.EntityBuilders
private string RewriteName(string name) 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) 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) 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)) if (!string.IsNullOrEmpty(condition))
{ {
updateSql += $"WHERE {condition}"; updateSql += $"WHERE {condition}";