MySQL complaining about foreign key constraint inside CREATE TABLE -
i have following ~/mydb.sql file:
create database if not exists my_db character set utf8 collate utf8_general_ci; set default_storage_engine=innodb; use my_db; create table if not exists countries ( country_id bigint unsigned not null auto_increment, country_name varchar(250) not null, country_label varchar(250) not null, country_description varchar(500) not null, country_code varchar(25) not null, constraint pk_countries primary key (country_id), index idx_country_label (country_label), index idx_country_code (country_code), constraint uc_countries_name unique (country_name), constraint uc_countries_label unique (country_label), constraint uc_countries_desc unique (country_description), constraint uc_country_code unique (country_code) ); create table if not exists states ( state_id bigint unsigned not null auto_increment, state_name varchar(250) not null, state_label varchar(250) not null, state_description varchar(500) not null, state_abbrev varchar(25) not null, constraint pk_states primary key (state_id), index idx_state_label (state_label), index idx_state_abbrev (state_abbrev), constraint uc_states_name unique (state_name), constraint uc_states_label unique (state_label), constraint uc_states_desc unique (state_description), constraint uc_state_abbrev unique (state_abbrev) ); create table if not exists addresses ( address_id bigint unsigned not null auto_increment, state_id bigint unsigned not null, country_id bigint unsigned not null, address_line_1 varchar(250) not null, address_line_2 varchar(250), address_line_3 varchar(250), address_city varchar(250), address_postal_code varchar(25) not null, constraint pk_addresses primary key (address_id), constraint fk_addresses_states_state_id foreign key state_id references states (state_id), constraint fk_addresses_countries_country_id foreign key country_id references countries (country_id), index idx_addresses_line1_postal (address_line_1, address_postal_code), constraint uc_addresses_all unique (address_line_1, address_line_2, address_line_3, address_postal_code) ); when log mysql command line , run error on foreign key definition addresses table:
mysql> source ~/mydb.sql query ok, 2 rows affected (0.01 sec) mysql> source ~/tmp/testdb.sql query ok, 1 row affected (0.00 sec) query ok, 0 rows affected (0.00 sec) database changed query ok, 0 rows affected (0.02 sec) query ok, 0 rows affected (0.02 sec) error 1064 (42000): have error in sql syntax; check manual corresponds mysql server version right syntax use near 'references states(state_id), constraint fk_addresses_countries_country_id fo' @ line 12 i've check , rechecked syntax , cannot figure out i'm going awry. can spot it?
try create table -
create table if not exists addresses ( address_id bigint unsigned not null auto_increment, state_id bigint unsigned not null, country_id bigint unsigned not null, address_line_1 varchar(250) not null, address_line_2 varchar(250), address_line_3 varchar(250), address_city varchar(250), address_postal_code varchar(25) not null, constraint pk_addresses primary key (address_id), constraint fk_addresses_states_state_id foreign key (state_id) references states (state_id), constraint fk_addresses_countries_country_id foreign key (country_id) references countries (country_id), index idx_addresses_line1_postal (address_line_1, address_postal_code), constraint uc_addresses_all unique (address_line_1, address_line_2, address_line_3, address_postal_code) ); problem brackets.
Comments
Post a Comment