Bug #1182 CREATE TABLE "Error 1064" Not related to Syntax, Related to .SQL file
Submitted: 2 Sep 2003 11:52 Modified: 4 Oct 2005 14:27
Reporter: Sean Kennedy Email Updates:
Status: Not a Bug Impact on me:
None 
Category:MySQL Server: Command-line Clients Severity:S4 (Feature request)
Version:all OS:Any (all)
Assigned to: CPU Architecture:Any

[2 Sep 2003 11:52] Sean Kennedy
Description:
Author NOTE: Common occurence if migrating from Oracle data-warehouses to MySQL data warehouses where a row-schema is used that appears to be outrageous, and has many COLUMNS.

Fault tested and found on following platforms. Appears to be MYSQL CLI-CLIENT
application related. Systems Tested include:
LinuxIntel/Win32/Linux390 Mysql servers 3.2x.yy and higher.  (not specific to server) Linux390/LinuxPPC/Linux68k/OpenBSD (Compiled from source tarball) 4.x and higher packages.

Using 'mysql --user=myuser --password=mypass <MY_SQL_LDR_SCR.sql'
the Error:
ERROR 1064 at line 14: You have an error in your SQL syntax.  Check the manual that corresponds to your MySQL server ver
sion for the right syntax to use near 'USR_DHCMA_ADJUST_CODE                     CHAR(2) DEFAULT '',

How to repeat:
file: MY_SQL_LDR_SCR.sql  ***

-- This snapshot is a derivation of Prior Work
-- All rights reserved.  All changes are reflective of providing
-- Technical assistance. Not for commercial implementation.
--
-- MySQL dump/load 9.07
--
-- Host: localhost    Database: MYTSTDB
---------------------------------------------------------
-- Server version	4.00.00

CREATE DATABASE MYTSTDB;
USE MYTSTDB;

--
-- Table structure for table 'TBL_TST'
--

CREATE TABLE TBL_FST 
(
 USR_EMP_ID                                CHAR(9) DEFAULT '',
 USR_PYRLL_UNIT                            CHAR(9) DEFAULT '',
 USR_NAME                                  CHAR(30) DEFAULT '',
 USR_CHANGED                               CHAR(1) DEFAULT '',
 USR_PYRLL_UNIT_2                          CHAR(9) DEFAULT '',
 USR_LAST_NAME                             CHAR(30) DEFAULT '',
 USR_FIRST_NAME                            CHAR(15) DEFAULT '',
 USR_MIDDLE_INITIAL                        CHAR(15) DEFAULT '',
 USR_PAYROLL_CALC_SEQ                      CHAR(1) DEFAULT '',
 USR_SOCIAL_INSURANCE_NO                   CHAR(9) DEFAULT '',
 USR_CHECK_NAME                            CHAR(30) DEFAULT '',
 USR_ADDRESS_1                             CHAR(30) DEFAULT '',
 USR_ADDRESS_2                             CHAR(30) DEFAULT '',
 USR_ADDRESS_3                             CHAR(30) DEFAULT '',
 USR_CITY                                  CHAR(17) DEFAULT '',
 USR_PROV                                  CHAR(2) DEFAULT '',
 USR_POSTCODE                              CHAR(10) DEFAULT '',
 USR_HOME_AREA_CODE                        CHAR(3) DEFAULT '',
 USR_HOME_PHONE                            CHAR(8) DEFAULT '',
 USR_OFFICE_AREA_CODE                      CHAR(3) DEFAULT '',
 USR_OFFICE_PHONE                          CHAR(8) DEFAULT '',
 USR_OFFICE_EXTENSION                      CHAR(4) DEFAULT '',
 USR_FORMER_NAME                           CHAR(30) DEFAULT '',
 USR_EMER_NAME                             CHAR(30) DEFAULT '',
 USR_EMER_ADDRESS_1                        CHAR(30) DEFAULT '',
 USR_EMER_ADDRESS_2                        CHAR(30) DEFAULT '',
 USR_EMER_ADDRESS_3                        CHAR(30) DEFAULT '',
 USR_EMER_CITY                             CHAR(17) DEFAULT '',
 USR_EMER_PROV                             CHAR(2) DEFAULT '',
 USR_EMER_POSTCODE                         CHAR(10) DEFAULT '',
 USR_EMER_1_AREA_CODE                      CHAR(3) DEFAULT '',
 USR_EMER_1_PHONE                          CHAR(8) DEFAULT '',
 USR_EMER_1_EXTENSION                      CHAR(4) DEFAULT '',
 USR_EMER_2_AREA_CODE                      CHAR(3) DEFAULT '',
 USR_EMER_2_PHONE                          CHAR(8) DEFAULT '',
 USR_EMER_2_EXTENSION                      CHAR(4) DEFAULT '',
 USR_SEX                                   CHAR(1) DEFAULT '',
 USR_FULL_PART_RETIRED                     CHAR(2) DEFAULT '',
 USR_BENEFIT_STATUS                        CHAR(2) DEFAULT '',
 USR_SALARIED_HOURLY                       CHAR(1) DEFAULT '',
 USR_PAYROLL_GROUP                         CHAR(4) DEFAULT '',
 USR_EMPLOYEE_STATUS                       CHAR(2) DEFAULT 'AC',
 USR_BENEFIT_CLASS                         CHAR(5) DEFAULT '',
 USR_BENEFIT_DATE                          CHAR(8) DEFAULT '',
 USR_HIRE_DATE                             CHAR(8) DEFAULT '',
 USR_REHIRE_DATE                           CHAR(8) DEFAULT '',
 USR_ADJUSTED_HIRE_DATE                    CHAR(8) DEFAULT '',
 USR_BIRTH_DATE                            CHAR(8) DEFAULT '',
 USR_ETHNIC_CODE                           CHAR(2) DEFAULT '',
 USR_OFFICER                               CHAR(1) DEFAULT '',
 USR_TERMINATION_DATE                      CHAR(8) DEFAULT '',
 USR_TERMINATION_CODE                      CHAR(5) DEFAULT '',
 USR_TERMINATION_REASON                    CHAR(30) DEFAULT '',
 USR_POSITION_CODE                         CHAR(6) DEFAULT '',
 USR_ORGANIZATION                          CHAR(9) DEFAULT '',
 USR_TITLE                                 CHAR(30) DEFAULT '',
 USR_WORK_COMP                             CHAR(4) DEFAULT '',
 USR_UNION                                 CHAR(2) DEFAULT '',
 USR_CITIZENSHIP                           CHAR(2) DEFAULT '',
 USR_MILITARY                              CHAR(4) DEFAULT '',
 USR_PAYROLL_CYCLE                         CHAR(1) DEFAULT '',
 USR_SHIFT                                 CHAR(1) DEFAULT '',
 USR_HAS_COST_CENTER                       CHAR(1) DEFAULT 'N',
 USR_VBT_FLAG                              CHAR(1) DEFAULT '',
 USR_VBT_DEDUCTION_FLAG                    CHAR(1) DEFAULT '',
 USR_VBT_TRANSIT_ROUTING_NO                CHAR(9) DEFAULT '',
 USR_VBT_ACCOUNT_NO                        CHAR(17) DEFAULT '',
 USR_MINIMUM_CHECK                         NUMERIC(11,2) DEFAULT 0,
 USR_VBT_PRENOTE_DATE                      CHAR(8) DEFAULT '',
 USR_LAST_PAID_DATE                        CHAR(8) DEFAULT '',
 USR_ANNUAL_PAY                            NUMERIC(11,2) DEFAULT 0,
 USR_REGULAR_PAY_CODE                      CHAR(8) DEFAULT '',
 USR_SALARY_RATE                           NUMERIC(11,4) DEFAULT 0,
 USR_SALARY_RATE_CHANGE_DATE               CHAR(8) DEFAULT '',
 USR_SALARY_RATE_CHANGE_AMOUNT             NUMERIC(11,4) DEFAULT 0,
 USR_SALARY_RATE_CHANGE_CODE               CHAR(5) DEFAULT '',
 USR_MARRIED_SINGLE                        CHAR(1) DEFAULT '',
 USR_RETURN_DATE                           CHAR(8) DEFAULT '',
 USR_TRANSFER_DATE                         CHAR(8) DEFAULT '',
 USR_PRINT_R9_FLAG                         CHAR(1) DEFAULT '',
 USR_PENSION_PLAN                          CHAR(1) DEFAULT '',
 USR_TAX_GROUP                             CHAR(4) DEFAULT '',
 USR_VETERAN_CODE                          CHAR(6) DEFAULT '',
 USR_HANDICAP_CODE                         CHAR(6) DEFAULT '',
 USR_CCRA_TYPE                             CHAR(6) DEFAULT '',
 USR_CCRA_EXPIRATION_DATE                  CHAR(8) DEFAULT '',
 USR_CCRA_ID                               CHAR(12) DEFAULT '',
 USR_CLEARANCE_TYPE                        CHAR(6) DEFAULT '',
 USR_CLEARANCE_NUMBER                      CHAR(12) DEFAULT '',
 USR_DRIVERS_LICENSE_TYPE                  CHAR(6) DEFAULT '',
 USR_DRIVERS_LICENSE_NO                    CHAR(12) DEFAULT '',
 USR_DRIVERS_LICENSE_PROV                  CHAR(2) DEFAULT '',
 USR_BOND_TYPE                             CHAR(6) DEFAULT '',
 USR_BOND_NUMBER                           CHAR(12) DEFAULT '',
 USR_SENIORITY_DATE                        CHAR(8) DEFAULT '',
 USR_SERVICE_YEARS                         NUMERIC(2) DEFAULT 0,
 USR_EDUCATION_YEARS                       NUMERIC(2) DEFAULT 0,
 USR_LOCATION                              CHAR(6) DEFAULT '',
 USR_REMINDER_CODE_1                       CHAR(5) DEFAULT '',
 USR_REMINDER_DATE_1                       CHAR(8) DEFAULT '',
 USR_REMINDER_CODE_2                       CHAR(5) DEFAULT '',
 USR_REMINDER_DATE_2                       CHAR(8) DEFAULT '',
 USR_REMINDER_CODE_3                       CHAR(5) DEFAULT '',
 USR_REMINDER_DATE_3                       CHAR(8) DEFAULT '',
 USR_REMINDER_CODE_4                       CHAR(5) DEFAULT '',
 USR_REMINDER_DATE_4                       CHAR(8) DEFAULT '',
 USR_REMINDER_CODE_5                       CHAR(5) DEFAULT '',
 USR_REMINDER_DATE_5                       CHAR(8) DEFAULT '',
 USR_REMINDER_CODE_6                       CHAR(5) DEFAULT '',
 USR_REMINDER_DATE_6                       CHAR(8) DEFAULT '',
 USR_RRMC_CODE                             CHAR(4) DEFAULT '',
 USR_DATE_LAST_CHANGE                      CHAR(8) DEFAULT '',
 USR_TIME_LAST_CHANGED                     CHAR(6) DEFAULT '',
 USR_LOCKED                                CHAR(8) DEFAULT 'N',
 USR_LAST_STOP_DATE                        CHAR(8) DEFAULT '',
 USR_TTF_CHANGED                           CHAR(1) DEFAULT 'N',
 USR_GGT_CHANGED                           CHAR(1) DEFAULT 'N',
 USR_SERVICE_MONTHS                        NUMERIC(4) DEFAULT 0,
 USR_GRADE                                 CHAR(4) DEFAULT '',
 USR_VARIABLE_1                            NUMERIC(11,2) DEFAULT 0,
 USR_VARIABLE_2                            NUMERIC(11,2) DEFAULT 0,
 USR_VARIABLE_3                            CHAR(6) DEFAULT '',
 USR_VARIABLE_4                            CHAR(6) DEFAULT '',
 USR_VARIABLE_5                            CHAR(8) DEFAULT '',
 USR_VARIABLE_6                            CHAR(8) DEFAULT '',
 USR_VARIABLE_7                            CHAR(8) DEFAULT '',
 USR_VARIABLE_8                            CHAR(8) DEFAULT '',
 USR_STANDARD_HOURS                        NUMERIC(7,4) DEFAULT 0,
 USR_SCHEDULE                              CHAR(10) DEFAULT '',
 USR_COUNTRY                               CHAR(3) DEFAULT '',
 USR_PENSION                               CHAR(6) DEFAULT '',
 USR_HIGHLY_COMPENSATED                    CHAR(1) DEFAULT 'N',
 USR_USER_STATUS                           CHAR(6) DEFAULT '',
 USR_USER_DEFINED_AREA_1                   CHAR(80) DEFAULT '',
 USR_USER_DEFINED_AREA_2                   CHAR(80) DEFAULT '',
 USR_MNGR_ID                               CHAR(9) DEFAULT '',
 USR_SALARY_RATE_FREQ                      CHAR(1) DEFAULT '',
 USR_NEXT_REVIEW_DATE                      CHAR(8) DEFAULT '',
 USR_LAST_STATUS_CODE                      CHAR(5) DEFAULT '',
 USR_LAST_STATUS_DATE                      CHAR(8) DEFAULT '',
 USR_LAST_STATUS_REASON                    CHAR(30) DEFAULT '',
 USR_CCRA_TYPE_2                           CHAR(6) DEFAULT '',
 USR_CCRA_EXPIRATION_2                     CHAR(8) DEFAULT '',
 USR_CCRA_ID_2                             CHAR(12) DEFAULT '',
 USR_ORGANIZATION_CHANGE_CODE              CHAR(5) DEFAULT '',
 USR_ORGANIZATION_CHANGE_DATE              CHAR(8) DEFAULT '',
 USR_POSITION_CHANGE_CODE                  CHAR(5) DEFAULT '',
 USR_POSITION_CHANGE_DATE                  CHAR(8) DEFAULT '',
 USR_CHANGE_DATE                           CHAR(8) DEFAULT '',
 USR_SPOUSE_LAST_NAME                      CHAR(30) DEFAULT '',
 USR_SPOUSE_FIRST_NAME                     CHAR(15) DEFAULT '',
 USR_SPOUSE_MIDDLE_NAME                    CHAR(15) DEFAULT '',
 USR_SPOUSE_NAME                           CHAR(30) DEFAULT '',
 USR_EMER_RELATIONSHIP                     CHAR(14) DEFAULT '',
 USR_CONSIDER_FOR_REHIRE                   CHAR(1) DEFAULT 'Y',
 USR_HRIS_EXPANSION_AREA                   CHAR(50) DEFAULT '',
 USR_PROCESS                               CHAR(1) DEFAULT '',
 USR_HR_ORG_UNIT                           CHAR(40) DEFAULT '',
 USR_PIN_NUMBER                            CHAR(4) DEFAULT '',
 USR_DHCMA_ADJUST_CODE                     CHAR(2) DEFAULT '',
 USR_DHCMA_ADJUST_REASON                   CHAR(30) DEFAULT '',
 USR_MAIL_ADDR_1                           CHAR(30) DEFAULT '',
 USR_MAIL_ADDR_2                           CHAR(30) DEFAULT '',
 USR_MAIL_ADDR_3                           CHAR(30) DEFAULT '',
 USR_MAIL_CITY                             CHAR(17) DEFAULT '',
 USR_MAIL_PROV                             CHAR(2) DEFAULT '',
 USR_MAIL_POSTAL                           CHAR(10) DEFAULT '',
 USR_MAIL_COUNTRY                          CHAR(3) DEFAULT '',
 USR_VIEW_LANG_PREF                        CHAR(3) DEFAULT '',
 USR_DOC_LANG_PREF                         CHAR(3) DEFAULT '',
 USR_FAX_AREA_CODE                         CHAR(3) DEFAULT '',
 USR_FAX_PHONE                             CHAR(8) DEFAULT '',
 USR_CELL_AREA_CODE                        CHAR(3) DEFAULT '',
 USR_CELL_PHONE                            CHAR(8) DEFAULT '',
 USR_PAGER_AREA_CODE                       CHAR(3) DEFAULT '',
 USR_PAGER_PHONE                           CHAR(8) DEFAULT '',
 USR_OTHER_AREA_CODE                       CHAR(3) DEFAULT '',
 USR_OTHER_PHONE                           CHAR(8) DEFAULT '',
 USR_EMAIL_ADDRESS                         CHAR(40) DEFAULT '',
 USR_HOME_COUNTY                           CHAR(16) DEFAULT '',
 USR_TRUE_MARITAL_STATUS                   CHAR(1) DEFAULT '',
 USR_NICKNAME                              CHAR(16) DEFAULT '',
 USR_PASSWORD                              CHAR(14) DEFAULT '',
 USR_NAME_TITLE                            CHAR(6) DEFAULT '',
 USR_SPOUSE_BIRTH_DATE                     CHAR(8) DEFAULT '',
 USR_NUM_DEPENDENTS                        NUMERIC(2) DEFAULT 0
 USR_DHCMA_ADJUST_CODE                     CHAR(2) DEFAULT '',
 USR_DHCMA_ADJUST_REASON                   CHAR(30) DEFAULT '',
 USR_DOC_LOCALE_PREF                       CHAR(5) DEFAULT '',
 USR_EMER_COUNTRY                          CHAR(3) DEFAULT '',
 USR_SMOKER                                CHAR(2) DEFAULT '',
 USR_SPOUSE_SMOKER                         CHAR(2) DEFAULT '',
 USR_OFFICE_ADDRESS_1                      CHAR(30) DEFAULT '',
 USR_OFFICE_ADDRESS_2                      CHAR(30) DEFAULT '',
 USR_OFFICE_ADDRESS_3                      CHAR(30) DEFAULT '',
 USR_OFFICE_ADDRESS_4                      CHAR(30) DEFAULT '',
 USR_OFFICE_CITY                           CHAR(30) DEFAULT '',
 USR_OFFICE_PROV_PROV                      CHAR(2) DEFAULT '',
 USR_OFFICE_POSTAL                         CHAR(10) DEFAULT '',
 USR_OFFICE_COUNTRY                        CHAR(3) DEFAULT '',
 USR_OFFICE_USE_LOC                        CHAR(1) DEFAULT 'Y',
 USR_OTHER_EXTENSION                       CHAR(4) DEFAULT '',
 USR_PAGER_EXTENSION                       CHAR(4) DEFAULT '',
 USR_EMER_LANGUAGE                         CHAR(3) DEFAULT '',
 USR_SAME_ADDRESSES                        CHAR(1) DEFAULT 'Y',
 USR_NAME_SUFFIX                           CHAR(3) DEFAULT '',
 USR_EMER_EMAIL_ADDRESS                    CHAR(64) DEFAULT '',
 USR_PREFERRED_GIVEN_NAME                  CHAR(15) DEFAULT '',
 USR_LEGAL_NAME                            CHAR(50) DEFAULT '',
 USR_EMER_SAME_ADDRESSES                   CHAR(1) DEFAULT 'Y',
 USR_DHCMA_NORMAL_RET_DATE                 CHAR(8) DEFAULT '',
 USR_DHCMA_3070_RET_DATE                   CHAR(8) DEFAULT '',
 USR_DHCMA_33AFC_RET_DATE                  CHAR(8) DEFAULT '',
 USR_DHCMA_YEARS_CAAT_SERV                 CHAR(3) DEFAULT '',
 USR_DHCMA_RRDT_SERV_DATE                  CHAR(8) DEFAULT '',
); 

file: MY_SQL_LDR_SCR.sql  ***

Use 'mysql --user=myuser --password=mypass <MY_SQL_LDR_SCR.sql'

And the 1064 Error should appear at the respective line where the Operating System and compile build specific point is reached.

Suggested fix:
NOTE: The Syntax for all of the above was tested rigorously for correct-ness, this is NOT a SYNTAX problem, but a SCRIPT feeding problem into the MYSQL-CLIENT used in the COMMAND-LINE and buffer related issues from first approximations.

This appears to be related to the "Quantity" of statements for COLUMN descriptions for the CREATE TABLE statement in the .SQL script file.  
Each platform errors CONSISTENTLY at the same quantity point.

WORKAROUND:

The ALTER TABLE syntax is not limited for use to add the COLUMNS needed that the CLIENT .SQL script cannot load.

In fact the .SQL file quantity of statements used in the command-line script is the limiting factor, and is not server related. And also leads to a similar error if the "ALTER TABLE" scripts are not distributed accordingly.

When using 'mysql --user=myuser --password=mypass <MY_SQL_LDR_SCR.sql' type of inline script statements, limit the statements in the .SQL file to ~15 less than what the error stops at: In the above example I would use a .SQL script with only 170 Lines of SQL statements.

file: MY_SQL_LDR_SCR.sql  ***

USE MYTSTDB;

CREATE TABLE MYHUGE_COLUMN_SETS 
(
MY_TABLE_NAME_000  NUMERIC(2) DEFAULT 0
);

ALTER TABLE MYHUGE_COLUMN_SETS ADD MY_TABLE_NAME_001  NUMERIC(2) DEFAULT 0;
ALTER TABLE MYHUGE_COLUMN_SETS ADD MY_TABLE_NAME_002  NUMERIC(2) DEFAULT 0;
ALTER TABLE MYHUGE_COLUMN_SETS ADD MY_TABLE_NAME_003  NUMERIC(2) DEFAULT 0;
ALTER TABLE MYHUGE_COLUMN_SETS ADD MY_TABLE_NAME_004  NUMERIC(2) DEFAULT 0;
ALTER TABLE MYHUGE_COLUMN_SETS ADD MY_TABLE_NAME_005  NUMERIC(2) DEFAULT 0;
.
.
.
.
ALTER TABLE MYHUGE_COLUMN_SETS ADD MY_TABLE_NAME_170  NUMERIC(2) DEFAULT 0;

file: MY_SQL_LDR_SCR.sql  ***

file: MY_SQL_LDR_SCR2.sql  ***

USE MYTSTDB;

ALTER TABLE MYHUGE_COLUMN_SETS ADD MY_TABLE_NAME_171  NUMERIC(2) DEFAULT 0;
ALTER TABLE MYHUGE_COLUMN_SETS ADD MY_TABLE_NAME_172  NUMERIC(2) DEFAULT 0;
ALTER TABLE MYHUGE_COLUMN_SETS ADD MY_TABLE_NAME_173  NUMERIC(2) DEFAULT 0;
.
.
.
.
.
ALTER TABLE MYHUGE_COLUMN_SETS ADD MY_TABLE_NAME_215  NUMERIC(2) DEFAULT 0;

file: MY_SQL_LDR_SCR2.sql  ***

Then use a script or batch file with:

mysql --user=myuser --password=mypass <MY_SQL_LDR_SCR.sql
mysql --user=myuser --password=mypass <MY_SQL_LDR_SCR2.sql

In the batch to create the tables.
[4 Oct 2005 14:27] Hartmut Holzgraefe
> ...
> USR_SPOUSE_BIRTH_DATE                     CHAR(8) DEFAULT '',
> USR_NUM_DEPENDENTS                        NUMERIC(2) DEFAULT 0
> USR_DHCMA_ADJUST_CODE                     CHAR(2) DEFAULT '',
> ...
> USR_DHCMA_RRDT_SERV_DATE                  CHAR(8) DEFAULT '',
> );
> ... 
> NOTE: The Syntax for all of the above was tested rigorously for correct-ness,
> this is NOT a SYNTAX problem,

sorry to prove you wrong but this *is* a syntax problem, there is a comma missing
after the "DEFAULT 0". there is also another syntax error at the very end of the 
CREATE statement, there it is a trailing comma that shouldn't be there

after fixing these two problems the statement executes just fine