System Init fails when installing VL on a PC which has a Beta option enabled

Date: 18 Feb 2020
Product/Release: Visual LANSA - All supported versions
Abstract: System Init fails when installing on a PC which has the option “Beta: Use Unicode UTF-8 for worldwide language support” enabled.
Submitted By: LANSA Technical Support


This option is set by navigating to Control Panel, Clock & Region, selecting the Administrative tab, then click Change System Locale and enabling the option. Refer to the dialogs shown below…

Open regedit

LANSA is not compatible with this Beta/experimental feature. It causes all input data to be presumed to be in UTF-8 format. When the ANSI codepage data is converted to the database codepage, presuming the data is in UTF-8 format, the data is corrupted.

This option may be switched on at any time. Whenever it is switched on, SQL Server will always corrupt the data. Switching the option on and off only causes permanent damage to the data in SQL Server. Software installations themselves are unaffected. In particular, SQL Server is installed the same whatever this option is set to.

Data corruption may occur with other database servers like Oracle and MySQL. And if it does not already occur with other databases, it may occur in the future if software updates are released for these other database servers.

The symptom when installing Visual LANSA is that a fatal error String data, right truncation in Routine X_DBI_Fetch_by_Cursor is generated by the ODBC driver. See following image. Note that different symptoms will occur when running the IDE and running applications.

Open regedit


The workaround is to switch the option off and redo whatever you were doing. In this case, with the Visual LANSA install, after switching the option off, uninstall Visual LANSA and delete the database from SQL Server. And do not switch the option back on.

For the IDE and runtime, data may have been corrupted which will need to be manually resolved.

For the next version of LANSA, a change will be introduced to detect that the option is enabled and not allow LANSA to run until the option is turned off.