从Google Cloud Sql使用eclipse生成数据库的DDL语句会导致脚本出现问题?

25

我使用Data Source Explorer从Eclipse连接到了Google Cloud SQL数据库。但是,当我使用数据库选项Generate DDL生成DDL时,在我的脚本中无法获取AUTO_INCREMENT,而是得到相应的主键。

我该如何在我的脚本中获取AUTO_INCREMENT


你是否正在使用Eclipse的Google插件? - Neil H
@Neil H,是的,我正在使用Google插件。 - Master Mind
1
我建议您重新阅读您的问题,并尝试用不同的措辞来表达,以便更清楚地了解您的问题,否则人们会投票将其关闭为“不是问题”。您只需要添加几个句子,而不是试图在一个句子中解释所有内容(第二个句子)。 - Michael Dillon
主键应该是自动递增的,因为它应该是行的ID(对于所有表格)。++ 你能给个例子说明你在这里尝试做什么吗? - Steve P
2个回答

1

虽然这并没有直接回答问题,但我相信它将提供解决根本目标的解决方案:提取DDL。

假设:以下是一个shell脚本,因此需要适当的环境(OS X、Linux、cygwin)。

步骤:

  1. 安装命令行脚本(请按照这里的说明进行操作
  2. 在与google_sql.sh相同的目录下创建以下自定义脚本:

    GOOGLE_CLOUD_SQL_INSTANCE=test:test
    
    echo "SELECT CONCAT('SELECT CONCAT(\"SHOW CREATE TABLE ',schema_name,'.\",table_name,\";\") \"select \\\\\"use ',schema_name,';\\\\\";\" FROM information_schema.tables WHERE table_schema = \"',schema_name,'\";') 'use information_schema;' FROM SCHEMATA WHERE schema_name NOT IN ('information_schema','mysql','performance_schema');" >> $$.1.get_schema.sql
    
    ./google_sql.sh $GOOGLE_CLOUD_SQL_INSTANCE information_schema < $$.1.get_schema.sql > $$.2.show_create.sql
    
    ./google_sql.sh $GOOGLE_CLOUD_SQL_INSTANCE information_schema < $$.2.show_create.sql > $$.3.sql.out
    
    ./google_sql.sh $GOOGLE_CLOUD_SQL_INSTANCE information_schema < $$.3.sql.out > $$.4.create.raw
    
    awk -F"  " '/Table Create Table/{print "";}
     /CREATE/{sub(/^..*CREATE TABLE/,"CREATE TABLE");print $0}
     $1 == "" {print $0}
     /^\)/{print $0";"}
     /^use/{print $0}' $$.4.create.raw > $GOOGLE_CLOUD_SQL_INSTANCE.ddl.sql
    
    rm $$.*
    
  3. 将脚本中的“test:test”替换为您的Google Cloud实例标识符

  4. 执行该脚本,生成格式为“test:test”.ddl.sql的文件,其中包含所有数据库中所有表的DDL。

0
也许这可以帮助你:

Google Cloud SQL 第三步

使用 DDL 的另一个示例如下:

CREATE TABLE tabelle
(
feld datentyp [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT] [COMMENT 'string'],
CONSTRAINT name
  PRIMARY KEY (feld1, feld2, ...)
  FOREIGN KEY (feld1, feld2, ...) REFERENCES tabelle (feld1, feld2)
)

来源:http://www.tinohempel.de/info/info/datenbank/sql_tabelle.htm
虽然是德语,但例子非常好!

希望我理解了你的问题并且这能帮到你!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接