Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535.
Hey Sitefinity Team,
I'm running SF4.3.1885.0 with MySQL. I had many errors with SF4.2, for example when I wanted to open blogs in the backend, but now I upgraded and it's even worse. Now just calling Default.aspx gives me the following error. I'm really frustrated at the moment. I can't go back to SF4.2 because downgrade is not available.
Sorry for my question, but what the heck are you doing in the database that you can run into that error? Altering tables, adding colums? Sounds not like a good idea.
Server Error in '/' Application.
Row size too large. The maximum row size for the used table type, not
counting BLOBs, is 65535. You have to change some columns to TEXT or BLOBs
Description:
An unhandled exception occurred during the execution of the current web
request. Please review the stack trace for more information about the error and
where it originated in the code.
Exception Details:
Telerik.OpenAccess.RT.sql.SQLException: Row size too large. The maximum row
size for the used table type, not counting BLOBs, is 65535. You have to change
some columns to TEXT or BLOBs
Source Error:
An unhandled exception was generated during the execution of the
current web request. Information regarding the origin and location of the
exception can be identified using the exception stack trace below.
Stack Trace:
[SQLException: Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. You have to change some columns to TEXT or BLOBs]
Telerik.OpenAccess.RT.Adonet2Generic.Impl.StatementImp.executeUpdate(String sql) +190
Telerik.OpenAccess.RT.Adonet2Generic.Impl.StatementImp.execute(String sql) +5
OpenAccessRuntime.DataObjects.tools.ant.DataObjectsTaskBase.ExecuteSqlScript(String script, Connection con, SqlDriver sqlDriver, Boolean noShredder) +310
[OpenAccessException: SQL exception on 'ALTER TABLE `sf_blog_posts` ADD COLUMN `summary_en` NVARCHAR(4000) NULL' : Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. You have to change some columns to TEXT or BLOBs]
Telerik.OpenAccess.RT.ExceptionWrapper.Throw() +7
OpenAccessRuntime.DataObjects.tools.ant.DataObjectsTaskBase.throwBuildException(String str, Exception e) +60
OpenAccessRuntime.DataObjects.tools.ant.DataObjectsTaskBase.ExecuteSqlScript(String script, Connection con, SqlDriver sqlDriver, Boolean noShredder) +365
OpenAccessRuntime.DataObjects.tools.ant.DataObjectsTaskBase.runScript(String script) +111
OpenAccessRuntime.DataObjects.tools.ant.ExecuteScriptTask.execute() +288
[OpenAccessException: Telerik.OpenAccess.OpenAccessException: SQL exception on 'ALTER TABLE `sf_blog_posts` ADD COLUMN `summary_en` NVARCHAR(4000) NULL' : Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. You have to change some columns to TEXT or BLOBs]
Telerik.Sitefinity.Data.OA.OpenAccessConnection.UpgradeDatabase(Database database) +132
Telerik.Sitefinity.Data.OA.OpenAccessConnection.UpdateMetadata(MetadataSource metadataSource, String moduleName, List`1 dynamicTypesToRegister, IOpenAccessMetadataProvider provider) +2802
[Exception: Unable to upgrade database schema metadataSource provided by 'Telerik.Sitefinity.Modules.Libraries.Data.OpenAccessLibrariesProvider': Telerik.OpenAccess.OpenAccessException: SQL exception on 'ALTER TABLE `sf_blog_posts` ADD COLUMN `summary_en` NVARCHAR(4000) NULL' : Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. You have to change some columns to TEXT or BLOBs]
DynamicModule.ns.Wrapped_OpenAccessLibrariesProvider_12202b05611d4be5beb584214f22e283.Initialize(String providerName, NameValueCollection config, Type managerType) +198
Telerik.Sitefinity.Data.ManagerBase`1.InstantiateProvider(IDataProviderSettings providerSettings, Type providerType, ExceptionPolicyName policy, ManagerBase`1 manager) +1357
Telerik.Sitefinity.Data.ManagerBase`1.InstantiateProvider(IDataProviderSettings providerSettings, ExceptionPolicyName policy, ManagerBase`1 manager) +63
Telerik.Sitefinity.Data.ManagerBase`1.SetProvider(String providerName, String transactionName) +297
Telerik.Sitefinity.Data.ManagerBase`1..ctor(String providerName, String transactionName) +123
BuildUp_Telerik.Sitefinity.Modules.Libraries.LibrariesManager(IBuilderContext ) +179
Telerik.Microsoft.Practices.ObjectBuilder2.DynamicMethodBuildPlan.BuildUp(IBuilderContext context) +12
Telerik.Microsoft.Practices.ObjectBuilder2.BuildPlanStrategy.PreBuildUp(IBuilderContext context) +195
Telerik.Microsoft.Practices.ObjectBuilder2.StrategyChain.ExecuteBuildUp(IBuilderContext context) +190
Telerik.Microsoft.Practices.Unity.UnityContainer.DoBuildUp(Type t, Object existing, String name, IEnumerable`1 resolverOverrides) +163
[ResolutionFailedException: Resolution of the dependency failed, type = "Telerik.Sitefinity.Modules.Libraries.LibrariesManager", name = "OpenAccessDataProvider".
Exception occurred while: Calling constructor Telerik.Sitefinity.Modules.Libraries.LibrariesManager(System.String providerName).
Exception is: Exception - Unable to upgrade database schema metadataSource provided by 'Telerik.Sitefinity.Modules.Libraries.Data.OpenAccessLibrariesProvider': Telerik.OpenAccess.OpenAccessException: SQL exception on 'ALTER TABLE `sf_blog_posts` ADD COLUMN `summary_en` NVARCHAR(4000) NULL' : Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. You have to change some columns to TEXT or BLOBs
-----------------------------------------------
At the time of the exception, the container was:
Resolving Telerik.Sitefinity.Modules.Libraries.LibrariesManager,OpenAccessDataProvider
Calling constructor Telerik.Sitefinity.Modules.Libraries.LibrariesManager(System.String providerName)
]
Telerik.Sitefinity.Data.ManagerBase.GetManager(Type managerType, String providerName) +130
Telerik.Sitefinity.Modules.Libraries.LibrariesNodeFilter.IsNodeAccessPrevented(PageSiteNode pageNode) +130
Telerik.Sitefinity.Web.SiteMapBase.IsAccessibleToUserInternal(SiteMapNode node, SitefinityPrincipal user) +405
Telerik.Sitefinity.Web.NodeFiltersCache.IsAccessible(SiteMapBase sitemap, SiteMapNode node, SitefinityPrincipal user) +228
Telerik.Sitefinity.Web.SiteMapBase.IsAccessibleToUser(HttpContext context, SiteMapNode node) +148
Telerik.Sitefinity.Web.SitefinitySiteMap.IsAccessibleToUser(HttpContext context, SiteMapNode node) +19
System.Web.SiteMapNode.IsAccessibleToUser(HttpContext context) +17
Telerik.Sitefinity.Web.SitefinityRoute.CheckSecurity(HttpContextBase httpContext, PageSiteNode node) +40
Telerik.Sitefinity.Web.SitefinityRoute.GetRouteData(HttpContextBase httpContext) +396
System.Web.Routing.RouteCollection.GetRouteData(HttpContextBase httpContext) +287
System.Web.Routing.UrlRoutingModule.PostResolveRequestCache(HttpContextBase context) +60
System.Web.Routing.UrlRoutingModule.OnApplicationPostResolveRequestCache(Object sender, EventArgs e) +86
System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +148
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75
Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET
Version:4.0.30319.237
Some further investigation shows with help of MySQL Administrator that you add multiple colums for each language to different tables. I have localizations for en, it, fr, es, de. All the varchars with size up to 4000 characters destroys the MySQL border for row size. Especially when UTF-8 is used so that the space you need is multiplied with 3.
First of all, it is not a very good way to alter tables and add so many colums for each language, but that is okay if it works. In my case it will never work I guess. Maybe I have to port everything to MSSQL-Server.
I'm frustrated about this issue because it makes it impossible to use Sitefinity with MySQL and many localizations. You should overthink your database schema. Can you tell me that it would work with mssql?
Hi Carsten Koster,
Yes, we know about this issue, which is mentioned in the latest release notes:
MySQL: Multilingual is not supported
Unfortunately, the fix for this problem is complicated, it is related to reorganizing of the database layer regarding multilingual. We are considering to redesign this, by moving different languages in different tables instead of columns. However, because of the complication and regression risk of the change, it is still not planned.
With MS SQL server there is no such limitation.
Best wishes,
Vlad
the Telerik team
Hi Vlad,
thanks for the answer. I will try to migrate the MySQL db to MSSQL.
Bye