鉴于 `show variables like '%version%';` 的输出,我如何确定应该使用啥语法? [复制]

Posted

技术标签:

【中文标题】鉴于 `show variables like \'%version%\';` 的输出,我如何确定应该使用啥语法? [复制]【英文标题】:Given the output of `show variables like '%version%';`, how do I determine what syntax I should use? [duplicate]鉴于 `show variables like '%version%';` 的输出,我如何确定应该使用什么语法? [复制] 【发布时间】:2021-12-15 06:08:07 【问题描述】:

我有时会收到奇怪的 SQL 错误,告诉我检查我的 mysql 版本,例如

mysql> CREATE TABLE city (
    ->     id int  NOT NULL IDENTITY(1, 1),
    ->     city_name char(128)  NOT NULL,
    ->     lat decimal(9,6)  NOT NULL,
    ->     long decimal(9,6)  NOT NULL,
    ->     country_id int  NOT NULL,
    ->     CONSTRAINT city_pk PRIMARY KEY  (id)
    -> );
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IDENTITY(1, 1),
    city_name char(128)  NOT NULL,
    lat decimal(9,6)  NOT NUL' at line 2

所以我这样做:

mysql> show variables like '%version%';
+--------------------------+-------------------------------+
| Variable_name            | Value                         |
+--------------------------+-------------------------------+
| admin_tls_version        | TLSv1,TLSv1.1,TLSv1.2,TLSv1.3 |
| immediate_server_version | 999999                        |
| innodb_version           | 8.0.27                        |
| original_server_version  | 999999                        |
| protocol_version         | 10                            |
| replica_type_conversions |                               |
| slave_type_conversions   |                               |
| tls_version              | TLSv1,TLSv1.1,TLSv1.2,TLSv1.3 |
| version                  | 8.0.27-0ubuntu0.20.04.1       |
| version_comment          | (Ubuntu)                      |
| version_compile_machine  | x86_64                        |
| version_compile_os       | Linux                         |
| version_compile_zlib     | 1.2.11                        |
+--------------------------+-------------------------------+

错误消息的其余部分告诉我检查手册,但我不确定要检查哪个。这个输出告诉我的只是我正在使用未指定的版本 8.0.27。那么,从书上看,我下一步应该怎么做才能发现我原来的语法错误呢?

【问题讨论】:

这是mysql 8.0.27,mysql语法保持不变,只是管理功能可能会有所改变,可能会添加一些功能 将 id 字段更改为:id int(11) unsigned NOT NULL AUTO_INCREMENT, 【参考方案1】:

IDENTITY() 不受 MySQL 支持。那是 Microsoft SQL Server(和 Sybase)的东西。

您想使用AUTO_INCREMENT 执行类似的功能,即为主键分配单调递增的整数。

在这里阅读:https://dev.mysql.com/doc/refman/8.0/en/example-auto-increment.html

【讨论】:

以上是关于鉴于 `show variables like '%version%';` 的输出,我如何确定应该使用啥语法? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Mysql慢查询配置

mysql的分区

mysql性能优化配置总结

mysql日志文件在哪

专治 MySQL 乱码, 再也不想看到�了 !

MYSQL分区