Gerald,
>You can't add constraints referencing indices that don't exist.
>Create your indecies first.
Constraints don't reference indexes, they reference columns.
These columns exist. When the table type is MyISAM, the syntax
is accepted. When it's InnoDB - it fails.
(
This schema was originally on Oracle, where the syntax was valid and
acted on.)
Ian Hartas wrote:
>>Description:
>>
>>
> I have a database schema .sql file which is accepted when run with MyISAM
>tables. If I change the tables to be type = InnoDB, then it fails with the error
>message:
>
>mysql -u ts -p hbs <schema_mysql.sql
>ERROR 1005 at line 54: Can't create table './hbs/#sql-34ef_f.frm' (errno: 150)
>
>
>
>>How-To-Repeat:
>>
>>
> Save this text as schema_mysql.sql and run it as noted in the description
> line.
> database called 'hbs', user called 'ts'
>
>/*
>** MySQL schema for the Holiay Booking System within FJS.
>**
>** by Ian Hartas, Kid01.
>**
>*/
>
>drop table if exists ts_proj_team;
>drop table if exists ts_resource_mgrs;
>drop table if exists ts_entry;
>drop table if exists ts_user_details;
>drop table if exists ts_project_code_details;
>drop table if exists ts_project_details;
>drop table if exists ts_team;
>drop table if exists ts_programme;
>drop table if exists ts_location_entry;
>drop table if exists ts_default_location;
>
>create table ts_team
>(
> TEAM_ID integer(8) not null primary key
> ,TEAM_NAME varchar(30) not null
> ,team_admin_email varchar(100)
>) type = InnoDB;
>
>create table ts_programme
>(
> PROGRAMME_ID integer(8) not null primary key
> ,PROGRAMME_NAME varchar(30) not null
>) type = InnoDB;
>
>create table ts_user_details
>(
> USER_ID varchar(8) not null primary key
> ,TEAM_ID integer(8)
> ,STANDARD_HOURS float(30,2)
> ,USER_NAME varchar(40) not null
> ,PASSWORD varchar(20) not null
> ,DEFAULT_LOCATION_ID integer(8)
> ,ACTIVE CHAR(1) -- check(ACTIVE in ('Y','N'))
> ,DESCRIPTION varchar(255)
> ,EMAIL_ADDRESS varchar(100)
> ,HOURLY_RATE decimal(9,2)
> ,ACCESS_LEVEL integer(8) default 0
> ,charge_rate varchar(20)
> ,start_date datetime
> ,holiday_entitlement decimal(9,2)
> ,holiday_taken decimal(9,2)
> ,holiday_carry_over decimal(9,2)
> ,holiday_bought_sold decimal(9,2)
> ,holiday_hours varchar(200)
>) type = InnoDB;
>
>alter table ts_user_details add constraint u_t foreign key (team_id)
> references ts_team(team_id);
>
>create table ts_project_details
>(
> PROJECT_ID integer(8) not null primary key
> ,PROJECT_NAME varchar(60) not null
> ,DESCRIPTION varchar(255)
> ,ACTIVE CHAR(1) -- check(ACTIVE in ('Y','N'))
>) type = InnoDB;
>
>create table ts_project_code_details
>(
> PROJECT_CODE_ID integer(8) not null primary key
> ,PROJECT_ID integer(8) not null
> ,PROJECT_CODE varchar(10) not null
> ,PROJECT_CODE_NAME varchar(60) not null
> ,DESCRIPTION varchar(255)
> ,UTIL_IND CHAR(1)
> ,ACTIVE CHAR(1) -- check(ACTIVE in ('Y','N'))
>) type = InnoDB;
>
>alter table ts_project_code_details add constraint pc_t foreign key (project_id)
> references ts_project_details(project_id);
>
>create table ts_proj_team
>(
> TEAM_ID integer(8) not null
> ,PROJECT_ID integer(8) not null
>) type = InnoDB;
>
>alter table ts_proj_team add constraint pt_p foreign key (project_id)
> references ts_project_details(project_id);
>alter table ts_proj_team add constraint pt_t foreign key (team_id)
> references ts_team(team_id);
>
>create table ts_resource_mgrs
>(
> TEAM_ID integer(8) not null
> ,USER_ID varchar(8) not null
>) type = InnoDB;
>
>alter table ts_resource_mgrs add constraint rm_p foreign key(team_id)
> references ts_team(team_id);
>alter table ts_resource_mgrs add constraint rm_u foreign key(user_id)
> references ts_user_details(user_id);
>
>create table ts_entry
>(
> ID integer(38) not null primary key
> ,USER_ID varchar(8) not null
> ,PROJECT_ID integer(8)
> ,PROJECT_CODE_ID integer(8)
> ,TEAM_ID integer(8)
> ,HOURS FLOAT(30,2)
> ,EDATE datetime
> ,CDATE datetime
> ,MDATE datetime
> ,LOCKED CHAR(1) -- check(LOCKED in ('Y','N','D'))
> ,UPDATE_HOURS FLOAT(30,2)
> ,UPDATE_PROJECT_ID integer(8)
> ,UPDATE_PROJECT_CODE_ID integer(8)
> ,DESCRIPTION varchar(255)
> ,nbhours decimal(9,2)
> ,update_nbhours decimal(9,2)
>) type = InnoDB;
>
>alter table ts_entry add constraint e_p foreign key (project_id)
> references ts_project_details(project_id);
>
>alter table ts_entry add constraint ec_p foreign key (project_code_id)
> references ts_project_code_details(project_code_id);
>
>alter table ts_entry add constraint e_u foreign key (user_id)
> references ts_user_details(user_id);
>
>
>/*
>** Staff movement tracking
>*/
>
>create table ts_location_entry
>(
> USER_ID varchar(8) not null
> ,LDATE datetime
> ,AMPM CHAR(2)
> ,LOCATION varchar(40)
>) type = InnoDB;
>
>create table ts_default_location
>(
> DEFAULT_LOCATION_ID integer(8) not null primary key
> ,DEFAULT_LOCATION varchar(40)
> ,location_country char(3)
>) type = InnoDB;
>
>create index ts_proj_code_id_idx on ts_project_code_details (project_id);
>
>create index ts_proj_team_idx on ts_proj_team (team_id, project_id);
>
>create index ts_entry_index on ts_entry (user_id, edate) ;
>
>create index loc_ind on ts_location_entry (user_id,ldate,ampm) ;
>
>
># create sequence next_default_location_id increment by 1 start with 1000;
>create table next_default_location_id (id INT NOT NULL);
>insert into next_default_location_id values (999);
>
># create sequence next_team_id increment by 1 start with 1000;
>create table next_team_id (id INT NOT NULL);
>insert into next_team_id values (999);
>
># create sequence next_programme_id increment by 1 start with 1000;
>create table next_programme_id (id INT NOT NULL);
>insert into next_programme_id values (999);
>
># create sequence next_project_id increment by 1 start with 1000;
>drop table if exists next_project_id;
>create table next_project_id (id INT NOT NULL);
>insert into next_project_id values (999);
>
># create sequence next_project_code_id increment by 1 start with 1000;
>drop table if exists next_project_code_id;
>create table next_project_code_id (id INT NOT NULL);
>insert into next_project_code_id values (999);
>
># create sequence next_entry_id increment by 1 start with 1000;
>drop table if exists next_entry_id;
>create table next_entry_id (id INT NOT NULL);
>insert into next_entry_id values (999);
>
>
># End of schema
>
>
>
>>Fix:
>>
>>
> None known, other than to remove the "alter table" directives.
>
>
>
>>Submitter-Id: Ian Hartas
>>Originator: root
>>Organization:
>>
>>
>
> Fujitsu Services
> Westfields House, West Avenue, Kidsgrove, Staffordshire, UK.
>
>
>
>>MySQL support: none
>>Synopsis: Syntax accepted with MyISAM is reject by InnoDB - Fails on Linux and
>>Solaris
>>Severity: non-critical
>>Priority: low
>>Category: mysql
>>Class: sw-bug
>>Release: mysql-4.1.0-alpha (Source distribution)
>>Server: /usr/local/bin/mysqladmin Ver 8.40 Distrib 4.1.0-alpha, for pc-linux on i686
>>
>>
>Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
>This software comes with ABSOLUTELY NO WARRANTY. This is free software,
>and you are welcome to modify and redistribute it under the GPL license
>
>Server version 4.1.0-alpha-log
>Protocol version 10
>Connection Localhost via UNIX socket
>UNIX socket /tmp/mysql.sock
>Uptime: 5 days 21 hours 41 min 18 sec
>
>Threads: 1 Questions: 110 Slow queries: 0 Opens: 99 Flush tables: 1 Open tables:
>10 Queries per second avg: 0.000
>
>
>>C compiler: gcc (GCC) 3.2 20020903 (Red Hat Linux 8.0 3.2-7)
>>C++ compiler: g++ (GCC) 3.2 20020903 (Red Hat Linux 8.0 3.2-7)
>>Environment:
>>
>>
> Linux RedHat 8 and also Solaris 2.6
>System: Linux lifeboat 2.4.18-24.8.0smp #1 SMP Fri Jan 31 06:03:47 EST 2003 i686 i686
>i386 GNU/Linux
>Architecture: i686
>
>Some paths: /usr/bin/perl /usr/bin/make /usr/bin/gmake /usr/bin/gcc /usr/bin/cc
>GCC: Reading specs from /usr/lib/gcc-lib/i386-redhat-linux/3.2/specs
>Configured with: ../configure --prefix=/usr --mandir=/usr/share/man
>--infodir=/usr/share/info --enable-shared --enable-threads=posix --disable-checking --
>host=i386-redhat-linux --with-system-zlib --enable-__cxa_atexit
>Thread model: posix
>gcc version 3.2 20020903 (Red Hat Linux 8.0 3.2-7)
>Compilation info: CC='gcc' CFLAGS='' CXX='g++' CXXFLAGS='' LDFLAGS='' ASFLAGS=''
>LIBC:
>lrwxrwxrwx 1 root root 14 Jan 29 14:54 /lib/libc.so.6 ->
>libc-2.2.93.so
>-rwxr-xr-x 1 root root 1235468 Sep 6 2002 /lib/libc-2.2.93.so
>-rw-r--r-- 1 root root 2233342 Sep 5 2002 /usr/lib/libc.a
>-rw-r--r-- 1 root root 178 Sep 5 2002 /usr/lib/libc.so
>Configure command: ./configure
>
>
>
>
>
>
-------- End of forwarded message --------
--
regards,
Ian Hartas
----------------------------------
Why is it that the word "gullible"
isn't in the dictionary?
----------------------------------
-------- End of forwarded message --------
--
regards,
Ian Hartas
---------------------------------------------
"Pluralitas non est ponenda sine neccesitate"
Occam's Razor.
---------------------------------------------
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]