【问题标题】:Unable to CREATE table #1113 - A table must have at least 1 column无法创建表 #1113 - 表必须至少有 1 列
【发布时间】:2013-03-18 22:41:49
【问题描述】:

我不知道为什么我会收到这个错误,我想今天早上我运行这个查询没有错误并且它有效.. 我正在尝试将两个不同的表合并到一个表中,这些表具有相同的字段,但不同的值.

我正在使用:

create table jos_properties_merged engine = MERGE UNION =
(mergecasas.jos_properties_contacts,viftestdb.buu_properties_contacts);

我明白了

"#1113 - A table must have at least 1 column "

请问你知道我做错了什么吗?

【问题讨论】:

    标签: mysql create-table


    【解决方案1】:

    根据this link,您需要指定您的 2 个表中存在的完全相同的列:

    创建表 t1 ( 一个 INT NOT NULL AUTO_INCREMENT 主键, 消息 CHAR(20)) 引擎=MyISAM;

    创建表 t2 ( 一个 INT NOT NULL AUTO_INCREMENT 主键, 消息 CHAR(20)) 引擎=MyISAM;

    INSERT INTO t1 (message) VALUES ('Testing'),('table'),('t1'); mysql> 插入 t2 (消息) VALUES ('Testing'),('table'),('t2');

    创建表 全部的 ( -> 一个 INT NOT NULL AUTO_INCREMENT, -> 消息 CHAR(20), INDEX(a)) -> ENGINE=MERGE UNION=(t1,t2) INSERT_METHOD=LAST;

    【讨论】:

    • 好吧,我发誓我今天早上运行了这个查询并创建了一个合并表,但没有指定所有列...必须有其他方式,真的...
    • 这行得通!创建表students_merged as select * from db1.students_contacts;将忽略插入students_merged select * from db2.students_contacts;
    • 您好,再次感谢您的帮助,请在合并表时包含按字段(日期)排序的任何方法,以及运行此查询的方法,以便仅使用新表更新合并的表其他两个表的记录?请帮助我,非常感谢。
    • 是的,在您的 create..select..order by 语句中添加 order by。要使用新记录进行更新,您必须使用(在同一个查询中)WHERE your_primary_key NOT IN (select your_primarykey FROM students_merged)
    【解决方案2】:
    CREATE TABLE [IF NOT EXISTS] table_name(
       column_1_definition,
       column_2_definition,
       ...,
       table_constraints
    ) ENGINE=storage_engine;
    

    或者:(示例)

    mysql>

    Create Table films (
           name varchar(20), 
           production varchar(20), 
           language varchar(20)
           );
    

    【讨论】:

    • 虽然代码可以解决 OP 的问题,但最好添加上下文。解释此代码如何/为何解决问题。这将有助于未来的访问者学习,并防止未来的错误,它还有助于读者磨练此代码中最重要的注意事项。好的答案也更有可能获得投票。
    猜你喜欢
    • 2019-04-28
    • 2019-09-22
    • 2018-01-07
    • 2019-06-02
    • 1970-01-01
    • 2014-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多