|
Home
/ Technical Support / MySQL
Key Offerings:
B2B and B2C E-Business
Solutions
Offshore
Software Development Outsourcing
Strategic Consulting
Offshore Software Outsourcing
ALTOROS Systems
is headquartered in Tampa, Florida and maintains an office
near Boston, Massachusetts and technology development center
in Belarus and Russia. ALTOROS specializes on providing value-added
e-commerce and web-based software development and offshore
software outsourcing services to emerging enterprises helping
them successfully plan and implement business initiatives.
Contact Us for more
information.
MySQL-Windows Compared to Unix MySQL
MySQL-Windows has by now proven itself to be very stable. This version of MySQL has the same features as the corresponding Unix version with the following exceptions:
Windows 95 and threads
Windows 95 leaks about 200 bytes of main memory for each thread creation. Each connection in MySQL creates a new thread, so you shouldn't run mysqld for an extended time on Windows 95 if your server handles many connections! Other versions of Windows don't suffer from this bug.
Concurrent reads
MySQL depends on the pread() and pwrite() calls to be able to mix INSERT and SELECT. Currently we use mutexes to emulate pread()/pwrite(). We will, in the long run, replace the file level interface with a virtual interface so that we can use the readfile()/writefile() interface on NT/2000/XP to get more speed. The current implementation limits the number of open files MySQL can use to 1024, which means that you will not be able to run as many concurrent threads on NT/2000/XP as on Unix.
Blocking read
MySQL uses a blocking read for each connection. This means that:
· A connection will not be disconnected automatically after 8 hours, as happens with the Unix version of MySQL.
· If a connection hangs, it's impossible to break it without killing MySQL.
· mysqladmin kill will not work on a sleeping connection.
· mysqladmin shutdown can't abort as long as there are sleeping connections.
We plan to fix this problem when our Windows developers have figured out a nice workaround.
DROP DATABASE
You can't drop a database that is in use by some thread.
Killing MySQL from the task manager
You can't kill MySQL from the task manager or with the shutdown utility in Windows 95. You must take it down with mysqladmin shutdown.
Case-insensitive names
Filenames are case-insensitive on Windows, so database and table names are also case-insensitive in MySQL for Windows. The only restriction is that database and table names must be specified using the same case throughout a given statement. See Name case sensitivity.
The \ directory character
Pathname components in Windows 95 are separated by the \ character, which is also the escape character in MySQL. If you are using LOAD DATA INFILE or SELECT ... INTO OUTFILE, you must double the \ character:
mysql> LOAD DATA INFILE "C:\\tmp\\skr.txt" INTO TABLE skr;
mysql> SELECT * INTO OUTFILE 'C:\\tmp\\skr.txt' FROM skr;
Alternatively, use Unix style filenames with / characters:
mysql> LOAD DATA INFILE "C:/tmp/skr.txt" INTO TABLE skr;
mysql> SELECT * INTO OUTFILE 'C:/tmp/skr.txt' FROM skr;
Can't open named pipe error
If you use a MySQL 3.22 version on NT with the newest mysql-clients you will get the following error:
error 2017: can't open named pipe to host: . pipe...
This is because the release version of MySQL uses named pipes on NT by default. You can avoid this error by using the --host=localhost option to the new MySQL clients or create an option file C:\my.cnf that contains the following information:
[client]
host = localhost
Starting from 3.23.50, named pipes are only enabled if mysqld is started with --enable-named-pipe.
Access denied for user error
If you get the error Access denied for user: 'some-user@unknown' to database 'mysql' when accessing a MySQL server on the same machine, this means that MySQL can't resolve your host name properly.
To fix this, you should create a file \windows\hosts with the following information:
127.0.0.1 localhost
ALTER TABLE
While you are executing an ALTER TABLE statement, the table is locked from usage by other threads. This has to do with the fact that on Windows, you can't delete a file that is in use by another threads. (In the future, we may find some way to work around this problem.)
DROP TABLE on a table that is in use by a MERGE table will not work on Windows because MERGE handler does the table mapping hidden from the upper layer of MySQL. Because Windows doesn't allow you to drop files that are open, you first must flush all MERGE tables (with FLUSH TABLES) or drop the MERGE table before dropping the table. We will fix this at the same time we introduce VIEWs.
DATA DIRECTORY and INDEX DIRECTORY directives in CREATE TABLE is ignored on Windows, because Windows doesn't support symbolic links.
Here are some open issues for anyone who might want to help us with the Windows release:
· Make a single-user MYSQL.DLL server. This should include everything in a standard MySQL server, except thread creation. This will make MySQL much easier to use in applications that don't need a true client/server and don't need to access the server from other hosts.
· Add some nice start and shutdown icons to the MySQL installation.
· When registering mysqld as a service with --install (on NT) it would be nice if you could also add default options on the command-line. For the moment, the workaround is to list the parameters in the C:\my.cnf file instead.
· It would be really nice to be able to kill mysqld from the task manager. For the moment, you must use mysqladmin shutdown.
· Port readline to Windows for use in the mysql command-line tool.
· GUI versions of the standard MySQL clients (mysql, mysqlshow, mysqladmin, and mysqldump) would be nice.
· It would be nice if the socket read and write functions in net.c were interruptible. This would make it possible to kill open threads with mysqladmin kill on Windows.
· mysqld always starts in the "C" locale and not in the default locale. We would like to have mysqld use the current locale for the sort order.
· Add macros to use the faster thread-safe increment/decrement methods provided by Windows.
Other Windows-specific issues are described in the README file that comes with the MySQL-Windows distribution.
|