Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 使用eclipse从Google Cloud Sql生成数据库的DDL语句会导致脚本中出现问题吗?_Mysql_Eclipse_Google Cloud Sql - Fatal编程技术网

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

Mysql 使用eclipse从Google Cloud Sql生成数据库的DDL语句会导致脚本中出现问题吗?,mysql,eclipse,google-cloud-sql,Mysql,Eclipse,Google Cloud Sql,我使用数据源浏览器从eclipse连接到Google Cloud SQL数据库。但是,当我使用其选项generate DDL生成该数据库的DDL时,我无法在脚本中获取AUTO_INCREMENT,而是获取相应的主键 如何在脚本中获取自动增量?也许这有助于: 使用DDL的另一个示例如下: CREATE TABLE tabelle ( feld datentyp [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT] [COMMENT

我使用数据源浏览器从eclipse连接到Google Cloud SQL数据库。但是,当我使用其选项
generate DDL
生成该数据库的DDL时,我无法在脚本中获取
AUTO_INCREMENT
,而是获取相应的主键

如何在脚本中获取
自动增量?

也许这有助于:

使用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)
)
来源:
它是德语的,但是例子非常好


希望我正确理解了你的问题,这对我有帮助

虽然这并不能直接回答这个问题,但我相信它将为根本目标提供一个解决方案:提取DDL

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

步骤:

  • 安装命令行脚本()
  • 在与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 $$.*
    
    GOOGLE\u CLOUD\u SQL\u INSTANCE=test:test
    echo“SELECT CONCAT('SELECT CONCAT(\'SHOW CREATE TABLE',schema\u name',.\”,TABLE\u name,\“;”)“SELECT”\\\\\\\\'use',schema\u name',;“SELECT CONCAT(\'SHOW CREATE TABLE',schema\u name',.\”,“schema\u name',“;”)“use information\u schema\u schema,其中schema\u name不在('information\u schema','mysql'schema','performance\u schema'中使用信息\u schema;”>>$$.1.get\u schema.sql
    ./google\u sql.sh$google\u CLOUD\u sql\u实例信息\u schema<$.1.get\u schema.sql>$$.2.show\u create.sql
    ./google\u sql.sh$google\u CLOUD\u sql\u实例信息\u模式<$$.2.show\u create.sql>$$$.3.sql.out
    ./google\u sql.sh$google\u CLOUD\u sql\u实例信息\u模式<$$.3.sql.out>$$$.4.create.raw
    awk-F”“/Table创建表/{print”“;}
    /创建/{sub(/^..*CREATE TABLE/,“CREATE TABLE”);打印$0}
    $1==“打印$0}”
    /^\)/{打印$0”;“}
    /^使用/{print$0}'$$.4.create.raw>$GOOGLE\u CLOUD\u SQL\u INSTANCE.ddl.SQL
    rm$$*
    
  • 将脚本中的“test:test”替换为您的Google云实例标识符

  • 执行脚本以生成格式为“test:test”.ddl.sql的文件,该文件将具有所有数据库中所有表的ddl

  • 你是在使用Eclipse的谷歌插件吗?@Neil H,是的,我在使用谷歌插件。我建议你重新阅读你的问题,并尝试用不同的措辞,这样你问的问题就更清楚了,否则人们会投票将其作为非问题关闭。你只需要添加几个句子,而不是试图在一句话(第二句)中解释所有内容。主键应该是自动递增的,因为它应该是行的id?(对于你所有的表格)++你能举例说明你在这里想做什么吗?