鉴于“show variables like '%version%';”的输出,我如何确定我应该使用什么语法?
Given the output of `show variables like '%version%';`, how do I determine what syntax I should use?
我有时会遇到奇怪的 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。那么,按照书本,我下一步应该怎么做才能发现我原来的语法错误?
IDENTITY()
不受 MySQL 支持。这是 Microsoft SQL 服务器(和 Sybase)。
您想使用 AUTO_INCREMENT
执行类似的功能,为主键分配单调递增的整数。
在这里阅读:https://dev.mysql.com/doc/refman/8.0/en/example-auto-increment.html
我有时会遇到奇怪的 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。那么,按照书本,我下一步应该怎么做才能发现我原来的语法错误?
IDENTITY()
不受 MySQL 支持。这是 Microsoft SQL 服务器(和 Sybase)。
您想使用 AUTO_INCREMENT
执行类似的功能,为主键分配单调递增的整数。
在这里阅读:https://dev.mysql.com/doc/refman/8.0/en/example-auto-increment.html