Seal Report Forum
»
Troubleshooting
»
Bug Reports
»
Casting date columns to DATETIME2 by default when dealing with MySQL database
Rank: Newbie
Groups: Registered
Joined: 2/20/2019(UTC) Posts: 2
|
I've stumbled upon the following issue when using the LoadTableFromDataSource helper in order to load a table in one database from another table in a different database. The source database is SQL Server and has been defined as thus in the Connections section of the report, and the destination database is MySQL, also defined as thus in the Connections section. However, Seal Report is casting dates as DATETIME2, a type that does not exist in MySQL, thus the generated SQL code will be invalid and the task will fail upon execution. Adding the following: Code:helper.DatabaseHelper.ColumnDateTimeType = "datetime";
To the template is then required in order to get things working. Digging around in the code, from what I understand, the issue seems to be in DatabaseHelper.SetDatabaseDefaultConfiguration which has no special case for MySQL databases when handling date columns: Code: public DatabaseType DatabaseType = DatabaseType.MSSQLServer;
public void SetDatabaseDefaultConfiguration(DatabaseType type)
{
DatabaseType = type;
if (type == DatabaseType.Oracle)
{
_defaultColumnCharType = "varchar2";
_defaultColumnNumericType = "number(18,5)";
_defaultColumnIntegerType = "number(12)";
_defaultColumnDateTimeType = "date";
_defaultInsertStartCommand = "begin";
_defaultInsertEndCommand = "end;";
}
else
{
//Default, tested on SQLServer...
_defaultColumnCharType = "varchar";
_defaultColumnNumericType = "numeric(18,5)";
_defaultColumnIntegerType = "int";
_defaultColumnDateTimeType = "datetime2";
_defaultInsertStartCommand = "";
_defaultInsertEndCommand = "";
}
}
I'd need to set up the development environment to confirm it, but if it's truly the case I can submit a pull request to handle better defaults for other databases.
|
|
|
|
Rank: Administration
Groups: Administrators
Joined: 12/20/2013(UTC) Posts: 1,209 Thanks: 14 times Was thanked: 206 time(s) in 199 post(s)
|
Yes, good remark, you can do, test and submit the pull request to handle MySQL, we will integrate that for the 5.0. Thank you.
|
|
|
|
Seal Report Forum
»
Troubleshooting
»
Bug Reports
»
Casting date columns to DATETIME2 by default when dealing with MySQL database
Forum Jump
You cannot post new topics in this forum.
You cannot reply to topics in this forum.
You cannot delete your posts in this forum.
You cannot edit your posts in this forum.
You cannot create polls in this forum.
You cannot vote in polls in this forum.