Синтаксис MySQL: не может создать таблицу - PullRequest
1 голос
/ 24 апреля 2010
mysql> create table balance_sheet(
    -> Cash_and_cash_equivalents  VARCHAR(20),
    -> Trading_financial_assets  VARCHAR(20),
    -> Note_receivable  VARCHAR(20),
    -> Account_receivable  VARCHAR(20),
    -> Advance_money  VARCHAR(20),
    -> Interest_receivable  VARCHAR(20),
    -> Dividend_receivable  VARCHAR(20),
    -> Other_notes_receivable  VARCHAR(20),
    -> Due_from_related_parties  VARCHAR(20),
    -> Inventory  VARCHAR(20),
    -> Consumptive_biological_assets  VARCHAR(20),
    -> Non_current_asset(expire_in_a_year)  VARCHAR(20),
    -> Other_current_assets  VARCHAR(20),
    -> Total_current_assets  VARCHAR(20),
    -> Available_for_sale_financial_assets  VARCHAR(20),
    -> Held_to_maturity_investment  VARCHAR(20),
    -> Long_term_account_receivable  VARCHAR(20),
    -> Long_term_equity_investment  VARCHAR(20),
    -> Investment_real_eastate  VARCHAR(20),
    -> Fixed_assets  VARCHAR(20),
    -> Construction_in_progress  VARCHAR(20),
    -> Project_material  VARCHAR(20),
    -> Liquidation_of_fixed_assets  VARCHAR(20),
    -> Capitalized_biological_assets  VARCHAR(20),
    -> Oil_and_gas_assets  VARCHAR(20),
    -> Intangible_assets  VARCHAR(20),
    -> R&d_expense  VARCHAR(20),
    -> Goodwill  VARCHAR(20),
    -> Deferred_assets  VARCHAR(20),
    -> Deferred_income_tax_assets  VARCHAR(20),
    -> Other_non_current_assets  VARCHAR(20),
    -> Total_non_current_assets  VARCHAR(20),
    -> Total_assets  VARCHAR(20),
    -> Short_term_borrowing  VARCHAR(20),
    -> Transaction_financial_liabilities  VARCHAR(20),
    -> Notes_payable  VARCHAR(20),
    -> Account_payable  VARCHAR(20),
    -> Item_received_in_advance  VARCHAR(20),
    -> Employee_pay_payable  VARCHAR(20),
    -> Tax_payable  VARCHAR(20),
    -> Interest_payable  VARCHAR(20),
    -> Dividend_payable  VARCHAR(20),
    -> Other_account_payable  VARCHAR(20),
    -> Due_to_related_parties  VARCHAR(20),
    -> Non_current_liabilities_due_within_one_year  VARCHAR(20),
    -> Other_current_liabilities  VARCHAR(20),
    -> Total_current_liabilities  VARCHAR(20),
    -> Long_term_loan  VARCHAR(20),
    -> Bonds_payable  VARCHAR(20),
    -> Long_term_payable  VARCHAR(20),
    -> Specific_payable  VARCHAR(20),
    -> Estimated_liabilities  VARCHAR(20),
    -> Deferred_income_tax_liabilities  VARCHAR(20),
    -> Other_non_current_liabilities  VARCHAR(20),
    -> Total_non_current_liabilities  VARCHAR(20),
    -> Total_liabilities  VARCHAR(20),
    -> Paid_in_capital  VARCHAR(20),
    -> Contributed_surplus  VARCHAR(20),
    -> Treasury_stock  VARCHAR(20),
    -> Earned_surplus  VARCHAR(20),
    -> Retained_earnings  VARCHAR(20),
    -> Translation_reserve  VARCHAR(20),
    -> Nonrecurring_items  VARCHAR(20),
    -> Total_equity(non)  VARCHAR(20),
    -> Minority_interests  VARCHAR(20),
    -> Total_equity  VARCHAR(20),
    -> Total_liabilities_&_shareholder's_equity  VARCHAR(20));
    '>
    '> 

когда я нажимаю ввод, появляется вывод '>, никакой другой реакции, что не так?

Ответы [ 3 ]

4 голосов
/ 24 апреля 2010

Ваша проблема в последней строке. Имена столбцов не могут содержать & или ':

-> Total_liabilities_&_shareholder's_equity VARCHAR(20));

Измените его на:

-> Total_liabilities_shareholders_equity VARCHAR(20));

Редактировать

Оказывается, MySQL поддерживает специальные символы в именах столбцов, но вы должны избегать их:

-> `Total_liabilities_&_shareholder's_equity` VARCHAR(20));

Я настоятельно рекомендую не делать этого, хотя из соображений удобочитаемости.

Из документов :

Идентификатор может быть заключен в кавычки или некотируемый. Если идентификатор содержит специальные символы или является зарезервированным слово, вы должны цитировать его всякий раз, когда вы обратитесь к нему. Набор буквенно-цифровой персонажи из текущего персонажа set, «_» и «$» не являются специальными.

Символом кавычки идентификатора является обратный тик («` »).

2 голосов
/ 24 апреля 2010

используйте только буквенно-цифровые символы в именах полей. символы «нет» и «и»

1 голос
/ 24 апреля 2010

Подсветка кода SO является подсказкой. У вас есть апостроф в одном из имен ваших полей, который MySQL интерпретирует как начало строкового литерала, который никогда не заканчивается. Он терпеливо ждет, когда вы закончите свою цепочку.

...