MySQL Support Release Notes
MySQL the well known open DBMS is now available as a Genexus application platform. Java, .NET, Visual FoxPro and Visual Basic Generators support this DBMS in 9.0 version.
MySQL is a full featured DBMS and GeneXus fully supports it (no known limitation exists, at the time of this writing, that makes any Genexus feature not to be implemented on MySQL).
MySQL applications can have:
- Transactional integrity
- Row level locking
- Referential integrity
- Optimized reorganizations (using alter table add/drop/change column)
- Blob datatype
MySQL supports different engines to manage data store and indexes.
The engine Genexus uses is InnoDB (http://dev.mysql.com/doc/mysql/en/InnoDB.html). The option is generated at the moment of table reorganization/creation.
The most important reason we chose InnoDB is row level locking support.
In version 3.23 in Linux, InnoDB is disabled by default. To enable it, the minimum required setting is innodb_data_file_path=ibdata1:10M:autoextend in the file /etc/my.cnf.
There are other parameters, but this is enough to enable it. Without this setting transactional integrity doesn't work. From 4.0 version and on, InnoDB is enabled by default.
More info in http://dev.mysql.com/doc/mysql/en/InnoDB_configuration.html.
Mysql and Connector Versions
Tests were made using version 3.23.58 of MySQL, and also version 4.0.
Version 3.23 is the minor version we know it works correctly with GX.
We have tested it in Java using the MySQL Connector/J JDBC driver, available for download in MySQL download page.
With JDBC driver 3.0, you need the SUN virtual machine (SUN JDK 1.4 or higher is required). If you use 2.0 version, you can also use Microsoft virtual machine.
First of all, select 'MySQL' in the 'Model Properties' dialog.
In 'DBMS Options' dialog, JDBC, select 'MySQL JDBC Driver (Type 4)'. Configure the properties for database name, server, user and password, and then configure the 'Execution Options', including the JDBC driver ( mysql-connector-java-3.0.11-stable-bin.jar in the case of the 3.0 version ) in 'Classpath'. You must select 'Sun SDK' for 'Platform'.
Install Mysql Driver for .Net from the following link:http://sourceforge.net/projects/mysqldrivercs
You have to install driver and SDK.
After installing it, you will have:
- mysql.dll - this is a .NET native library to access MySQL (also called libmysql.dll)
- MySQLDriverCS.dll - this library is the ADO .Net data provider (developed by the project MySQLDriverCS) and is distributed with GeneXus . It is automatically copied to the bin directory.
The current version of MySQLDriverCS.dll is compatible with Mysql Driver for .Net 3.23.32 and upper. Nevertheless, it is recommended to install the new version of Mysql Driver for .Net.
The GX nullvalue for dates datatype is '1000-01-01', and for datetimes datatype is '1000-01-01 00:00:00' (they are the minimum values that MySQL can store for each datatype).
Empty values for chars in Mysql http://www.gxtechnical.com/main/hviewsac.aspx?2,3,14,18935
The default join type is Outer.
Mapping between GX and MySQL datatypes
|GX datatype || ||mySQL datatype
|N(X) ||X<5 || smallint
|N(X) ||X>=5 X<7 ||mediumint
|N(X) ||X>=7 X<10 ||int
|N(X) ||X>=10 ||bigint
|N(X,Y) || ||numeric(X,Y)
|CHAR(X) ||X<=255 ||(national)char
|VCHAR(X) || ||(national)varchar
|LVCHAR(X) ||X<=65535 ||(national)text
|LVCHAR(X) ||X<16777215, X>65535 ||(national)mediumText
|LVCHAR(X) ||X>16777215 ||(national)longtext
|DATE || ||date
|DATETIME || ||datetime |
1. national - This option is used when the DBMS option 'Enable national language support' is set to 'Yes'.
2. The length of a CHAR column is fixed to the length that you declare when you create the table. The length can be any value from 0 to 255
3. Mysql documentation says:
Values in VARCHAR columns are variable-length strings. The length can be specified as a value from 0 to 255 before MySQL 5.0.3, and 0 to 65,535 in 5.0.3 and later versions.
There's a GeneXus model property named "MySQL version" with the following values:
- 4.x to 5.0.2
- 5.0.3 or higher
The length of varchars greater than 255 depends on the value specified in that model property.
| Maximum Table name length || 64
|Maximum Index name length || 64
|Maximum Column name length || 64 |
You can download the Mysql server realease, and Graphical administration tools, from the following link:
Another one: DBManager
MySQL Connector/J JDBC driver download is available from here:
Mysql Driver for .Net: http://sourceforge.net/projects/mysqldrivercs
MySQL Connector/ODBC 3.51 Downloads
- The Val function cannot be evaluated in the server, this is a limitation of the DBMS
- In win platforms, using ODBC access, after inserting data in the form, if you "get" the data from the database, the character fields are truncated to only one character (however, in the database the data is correct). The problem is the ODBC driver. You should use 3.51.11 or upper.
- Unique index allows duplicates with null values. SAC 20301
Oracle purchased InnoDB!!