You may be having a compatibility issue that shows up in one or more of the following
You can have such problems if you installed incompatible MyDAC, ODAC, SDAC, IBDAC,
or UniDAC versions. All these products use common base packages. The easiest way
to avoid the problem is to uninstall all installed DAC products and then download
from our site and install the last builds.
Usually, you do not need any additional files. The only exceptions to this rule
are listed below:
Core Lab renaming issue that conserns Delphi for .Net users
If you have purchased a full version of MyDAC, you are entitled to distribute pre-compiled
programs created with its use. You are not entitled to propagate any components
inherited from MyDAC or using MyDAC source code. For more information see the License.rtf
file in your MyDAC installation directory.
You can create your own components that are inherited from MyDAC or that use the
MyDAC source code. You are entitled to sell and distribute compiled application
executables that use such components, but not their source code and not the components
The basic MyDAC license agreement will remain the same. With MyDAC 5.00, the MyDAC Edition Matrix will be reorganized and a
new MyDAC Subscription Program
will be introduced.
MyDAC 5.00 will come in four editions: Standard Edition, Professional Edition, Developer
Edition, and Trial Edition. MyDAC Professional Edition and MyDAC Developer Edition
can be acquired with Source Code.
When you upgrade to the new version, your edition level will be automatically updated
using the following Edition Correspondence Table.
Edition Correspondence Table for Upgrading to MyDAC 5.00
The feature list for each edition can be found at the
MyDAC features page.
After MyDAC 5.00, all upgrades to future versions are free to users with an active
Users that have a registration for versions of MyDAC prior to MyDAC 5.00 will have
to first upgrade to MyDAC 5.00 to jump in on the Subscription Program.
The MyDAC Subscription Program is an annual
maintenance and support service for MyDAC users.
Users with a valid MyDAC Subscription get the following benefits:
Priority Support is an advanced product support program which offers you
expedited individual assistance with MyDAC-related questions from the MyDAC developers
themselves. Priority Support is carried out over email and has a two business day
The MyDAC Subscription Program is available for registered users of MyDAC 5.00 and
Yes, you can. MyDAC version licenses are perpetual.
An annual MyDAC Subscription is included when ordering or upgrading to any registered
(non-Trial) edition of MyDAC 5.00 or higher.
You can renew your MyDAC Subscription on the
MyDAC Ordering Page. For more information, please contact
To upgrade to MyDAC 5.00, you can get a Version Update from the MyDAC Ordering Page. For more information, please contact
DbxMda is our dbExpress driver for MySQL.
dbExpress technology serves for providing a more or less uniform way to access different
servers (MS SQL, MySQL, Oracle and so on). It is based on drivers that include server-specific
features. Like any universal tool, in many specialized cases dbExpress providers
lose some functionality. For example, the dbExpress design-time is quite poor and
cannot be expanded.
MyDAC is a specialized set of components for MySQL, which has advanced server-specific
design-time and a component interface similar to that of BDE.
We tried to include maximal support of MySQL-specific features in both DbxMda and
MyDAC. However, the nature of dbExpress technology has some insurmountable restrictions.
For example, Unicode fields cannot be passed from a driver to dbExpress.
MyDAC and DbxMda use the same kernel and thus have similar performance. In some
cases dbExpress is slower because data undergoes additional conversion to correspond
to dbExpress standards.
To summarise, if it is important for you to be able to quickly adapt your application
to a database server other than MySQL, it is probably better to use DbxMda. In other
cases, especially when migrating from BDE or ADO, you should use MyDAC.
MyDAC uses a low-level protocol to access the database server. This allows MyDAC
to achieve high performance. From time to time we compare MyDAC with other products,
and MyDAC always takes first place.
Locate is performed on the client. So if you had set FetchAll to False when opening
your dataset, cached only some of the rows on the client, and then invoked Locate,
MyDAC will have to fetch all the remaining rows from the server before performing
the operation. On subsequent calls, Locate should work much faster.
If the Locate method keeps working slowly on subsequent calls or you are working
with FetchAll=True, try the following. Perform local sorting by a field that is
used in the Locate method. Just assign corresponding field name to the IndexFieldNames
Download and install MyDeveloper
Tools. In addition to syntax highlighting, MyDeveloper Tools provides a lot
of additional features.
Alternatively, you can download and install the freeware
SynEdit component set.
To quickly migrate your project from BDE you can use the BDE Migration Wizard. To
start it, open your project and choose BDE Migration Wizard from the MySQL menu
of your IDE.
You can determine your MyDAC version number in several ways:
Just set the DBAccess.ChangeCursor variable to False anywhere in your program. The
cursor will stop changing after this command is executed.
The values of these properties are templates for query statements, and they cannot
be manually executed. Usually there is no need to fill these properties because
the text of the query is generated automatically.
In special cases, you can set these properties to perform more complicated processing
during a query. These properties are automatically processed by MyDAC during the
execution of the Post, Delete, or RefreshRecord methods, and are used to construct
the query to the server. Their values can contain parameters with names of fields
in the underlying data source, which will be later replaced by appropriate data
For example, you can use the SQLInsert template to insert a row into a query instance
The value of the SQLInsert property will then be used by MyDAC to perform the last
Setting these properties is optional and allows you to automatically execute additional
SQL statements, add calls to stored procedures and functions, check input parameters,
and/or store comments during query execution. If these properties are not set, the
MyDAC dataset object will generate the query itself using the appropriate insert,
update, delete, or refresh record syntax.
Use the TMyConnection.GetDatabaseNames method.
Use the TMyConnection.GetTableNames method.
The following situations usually arise from the same problem:
To fix this, you should add the MyDacVcl (for Windows) or MyDacClx (for Linux) unit
to the uses clause of your project.
Yes, MyDAC is thread-safe but there is a restriction. The same TMyConnection object
cannot be used in several threads simultaneously. So if you have a multithreaded
application, you should have a TMyConnection object for each thread that uses MyDAC.
We always try to keep MyDAC compatible with previous versions, but sometimes we
have to change behaviour of MyDAC in order to enhance its functionality, or avoid
bugs. If either of changes is undesirable for your application, and you want to
save the old behaviour, please refer to the "Compatibility with previous versions"
topic in MyDAC help. This topic describes such changes, and how to revert to the
old MyDAC behaviour.
This error occurs when the database server is unable to determine which record to
modify or delete. In other words, there are either more than one record or no records
that suit the UPDATE criteria. Such situation can happen when you omit the unique
field in a SELECT statement (TCustomDADataSet.SQL) or when another user modifies
the table simultaneously. This exception can be suppressed. Refer to TCustomMyDataSet.Options.StrictUpdate
topic in MyDAC help for more information.
Fields of this type are represented in Delphi by TLargeIntField objects. In some
versions of Delphi, you cannot access these fields through the Value property (see
the protected method TLargeintField.SetVarValue in the DB unit for details). To
avoid this problem, you can change the field type to INT, which is usually sufficient
for key fields. Alternatively, you can avoid using Value.
First of all, you should find out what causes the problem. The list of most frequent
reasons for this error to occur is below.
If the connection is lost, MyDAC tries to reconnect to server. However, your last
command will probably not be executed, and you should repeat it again. MyDAC does
not try to reconnect if a transaction has started or if at least one of statements
The following problems may appear when using FetchAll=False mode:
Usage of FetchAll=False mode has many advantages; however, it also has some restrictions
since it requires an additional connection to server for data fetching to be created.
The additional connection is created to prevent the main connection from blocking.
These problems can be avoided by setting the FetchAll property. Please see description
of the FetchAll propery and the CreateConnection option in MyDAC help for more information.
Another alternative that prevents the application from hanging is to switch to the
InnoDB storage engine from MyISAM (FetchAll stays False). An application may hang
because MyISAM tables can get locked in a read/write collision. If you try to update
a table that is not fetched out, MySQL blocks the thread and waits untill the table
is completely fetched. For details please refer to the MySQL Reference Manual, the
Probably this is a bug of the MySQL Server protocol with prepared stored procedures
that return record sets. It occurs in the following cases:
Meet SDAC & UniDAC With SQL Server Cross-Platform Development Support
EntityDAC with support for RAD Studio XE7 released!
RAD Studio XE7 support in new Data Access Components!
"When I tried using the MySQL tools in FireDAC I had 20 pages of docs to plow through,
downloads from 3rd parties, modification of .ini files, changes to Windows directory
security, and I never got it working. (I have been working with Delphi since Delphi
1 so I am not a complete Newbie.)
MyDAC worked right out of the Box. Instant Gratification."
You might be also interested in:
ORM solution for Delphi:
MySQL management tools:
Delphi data access components for:
Universal Delphi data access components for any databases:
MySQL data access in other technologies:
Security-oriented components integrated with MyDAC: