Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.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表注释_Mysql_Sql - Fatal编程技术网

跨越多行的MySQL表注释

跨越多行的MySQL表注释,mysql,sql,Mysql,Sql,在MySQL中创建表时,我们可以指定注释 有人知道如何将字符串传递到跨多行的COMMENT=吗 我尝试过使用CONCAT结果的局部变量,也尝试过使用字符串文字语法,比如'foo''bar''baz' 例如: CREATE TABLE foo ( id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (id) ) COMMENT = 'some really long string that we want to span multiple lin

在MySQL中创建表时,我们可以指定注释

有人知道如何将字符串传递到跨多行的
COMMENT=

我尝试过使用CONCAT结果的局部变量,也尝试过使用字符串文字语法,比如
'foo''bar''baz'

例如:

CREATE TABLE foo (
    id INT NOT NULL AUTO_INCREMENT,
    PRIMARY KEY (id)
) COMMENT = 'some really long string that we want to span multiple lines instead of being limited to a single line';

如果要嵌入换行符,请使用
\n

CREATE TABLE `foo` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='some really long string\nthat we want to span multiple lines\ninstead of being limited to a single line'
如果使用
SHOW CREATE TABLE
查看注释,注释仍将显示为一个长字符串。该语句返回重新创建表所需的确切语法,因此,如果需要使用
\n
来放入换行符,则将显示该语句

但是,如果从信息模式查询表元数据,则可以将换行符作为实际换行符输出:

mysql> select * from information_schema.tables where table_name='foo'\G
*************************** 1. row ***************************
  TABLE_CATALOG: def
   TABLE_SCHEMA: test
     TABLE_NAME: foo
     TABLE_TYPE: BASE TABLE
         ENGINE: InnoDB
        VERSION: 10
     ROW_FORMAT: Compact
     TABLE_ROWS: 0
 AVG_ROW_LENGTH: 0
    DATA_LENGTH: 16384
MAX_DATA_LENGTH: 0
   INDEX_LENGTH: 0
      DATA_FREE: 0
 AUTO_INCREMENT: 1
    CREATE_TIME: 2018-10-02 23:37:57
    UPDATE_TIME: NULL
     CHECK_TIME: NULL
TABLE_COLLATION: utf8mb4_general_ci
       CHECKSUM: NULL
 CREATE_OPTIONS: 
  TABLE_COMMENT: some really long string
that we want to span multiple lines
instead of being limited to a single line

按照@BillKarwin的回答:如果您想使用多行创建注释,只需执行以下操作:

CREATE TABLE foo
(
    foo_id int primary key auto_increment,
    foo_name varchar(255)
)
COMMENT = 'this is a 
multi-line comment'
不幸的是,您无法在注释构造中进行任何类型的连接(将实际DDL拆分为多行,而实际DDL中没有换行符)。例如,这是不可能的:

CREATE TABLE foo(foo_id INT PRIMARY KEY AUTO_INCREMENT) 
COMMENT = CONCAT('multi-line', 
    ' comment'
当然,如果您通过客户机语言(PHP或Python或其他语言)访问MySQL,您可以根据需要构造字符串:

ddl = (     "CREATE TABLE `foo` "
            "(`foo_id` INT PRIMARY KEY AUTO_INCREMENT) "
            "COMMENT='This is a multi-line "
            "coment")

不过,我不希望注释中出现换行符,我只希望字符串本身能够跨越脚本中的多行。在实际的注释中没有换行符,这听起来像是文本编辑器中换行的问题,而MySQL没有问题。这稍微好一些,但我不希望表中有换行符comment@BrushyAmoeba:您似乎不能(在脚本中)使用多行注释定义中没有新行。我更新了我的答案,表明你可以在其他的客户端上使用它来与MySQL对话……啊,谢谢,这是个好主意。我可以在SQL上编写一个python脚本作为一个层,而我真正失去的只是语法突出显示。