Bug #12325 Unable to create table with the name nu
Submitted: 2 Aug 2005 21:44 Modified: 1 Sep 2005 19:53
Reporter: Matt Garrish
Status: Closed
Category:Server Severity:S3 (Non-critical)
Version:4.1.13/5.0.XX OS:Microsoft Windows (WinXP)
Assigned to: Jim Winstead Target Version:

[2 Aug 2005 21:44] Matt Garrish
Description:
If you try to create a table with the name "nu" you get the following error:

mysql> create table nu (mytest text);
ERROR 1017 (HY000): Can't find file: '.\nutemp\nu.frm' (errno: 13)

As nu is the postal abbreviation for Nunavut in Canada, this makes for a significant
problem for me. I cannot upgrade until this is fixed, and I'd really like to make use of
subselects.

How to repeat:
1. Default install of MySQL 4.1.13
2. Create any database with any name
3. Switch to the database in step two
4. Try to create a table called "nu" with any number or type of columns and the error will
be returned

Suggested fix:
Not known.
[2 Aug 2005 23:27] Miguel Solorzano
This is specify Windows issue. Looks as reserved words on Windows
like COM1, PRN and so on:

c:\mysql\bin>mysql -uroot test
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1 to server version: 4.1.13-nt

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> create table nu (id int);
ERROR 1017 (HY000): Can't find file: '.\test\nu.frm' (errno: 13)
mysql>

050802 16:44:17 [Note] mysqld-nt: ready for connections.
Version: '5.0.10-beta-nt'  socket: ''  port: 3306  Official MySQL binary
050802 16:48:20 [ERROR] mysqld-nt: Can't find file: '.\test\nu.frm' (errno: 13)
[3 Aug 2005 1:01] Matt Garrish
The problem does not occur in 4.0.18. I also started off on a 3.23 version (now lost on me
which release), and never had the problem. The error has occurred only since upgrading to
4.1.13.
[13 Aug 2005 20:28] Roland Bouman
Im having this too, but with a table name a. (I'm running 5.0.10 on WinXP Prof)

mysql> create table a (c int);
ERROR 1017 (HY000): Can't find file: '.\test\a.frm' (errno: 13)

There's also a problem with int1 as tablename:

mysql> create table int1(c int);
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 'int1(
c int)' at line 1

But the error message is different, so maybe this is unrelated and there's another reason
why you can do this.
[13 Aug 2005 20:30] Roland Bouman
Seems table name c is a problem too (WinXP, MySQL 5.0.10)

mysql> create table c(code int, week int, score int);
ERROR 1017 (HY000): Can't find file: '.\test\c.frm' (errno: 13)
[17 Aug 2005 8:37] Yoshiaki Tajika
I'm afraid there is an improper string comparison at my_access.c:
check_if_legal_filename(). This function checks if the given table name is one of reserved
names. Reserved names are defined as below(Ver 5.0.11). 

static const char *reserved_names[]={ "CON", "PRN", "AUX", "NUL", "COM1", "COM2", "COM3",
"COM4", "COM5", "COM6",
  "COM7", "COM8", "COM9", "LPT1", "LPT2", "LPT3", "LPT4", "LPT5", "LPT6",
  "LPT7", "LPT8", "LPT9", "CLOCK$",  NullS};

For now, if one of the reserved names is "ABCDEFG", table "A", "AB", "ABC", ..., "ABCDEF"
can't be created as well as "ABCDEFG".
Is this as designed???

nu, a, c,

intl
[17 Aug 2005 8:39] Yoshiaki Tajika
I'm sorry. The last two lines (nu, a, c, and intl) are just rubbish.
[23 Aug 2005 19:56] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/internals/28710
[25 Aug 2005 3:06] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/internals/28792
[1 Sep 2005 3:32] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/internals/29145
[1 Sep 2005 19:37] Jim Winstead
Fixed in 4.1.15 and 5.0.13.
[1 Sep 2005 19:53] Paul DuBois
Noted in 4.1.15, 5.0.13 changelogs.
[21 Sep 2005 23:37] Peter Laursen
This bugs affects views too!
Has this been fixed ?

DROP VIEW IF EXISTS `test`.`co`;
CREATE VIEW `test`.`co` AS ( SELECT * FROM mytable );

returns

Error Code : 1050
Table 'co' already exists
(0 ms taken)
[24 Sep 2005 14:06] Peter Laursen
I just got a 5.0.13 win binary from FTP mirrors.

It still IS NOT possible to create neither a table nor a view named 'co'.
Err. msg. goes "table allready exists".

But any other (legal) name seems to work!
[27 Sep 2005 0:46] Piotr Kubala
I found this problem after upgrade from 4.1.12a to 4.1.14.

4.1.12a works OK. You can use 4.1 features and create table 'nu' (tested).