数据库应用:Linux 部署 GaussDB

news2024/9/20 18:40:10

目录

 一、实验

1.环境

2.Linux 部署 GaussDB

3.Linux 使用 GaussDB 

4.使用 GaussDB 进行表与索引操作

5.使用 GaussDB 进行视图操作

6.使用 GaussDB 进行联表查询

7.使用 GaussDB 进行外键关联

二、问题

1.运行python脚本报错

2. 安装GaussDB 报错

3. install 安装有哪些参数

4. GaussDB有哪些服务状态

5. netstat 服务状态

6.查询表字段报错

7.添加外键报错


 一、实验

1.环境

(1)主机

表1  主机

主机软件版本IP备注
gaussdbGaussDB100192.168.204.80

(2)安全机制

查看

[root@localhost ~]# sestatus

关闭

[root@localhost ~]# vim /etc/selinux/config
……
SELINUX=disabled
……

再次查看(需要reboot重启)

[root@localhost ~]# sestatus

(3)防火墙

关闭

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl mask firewalld

(4)修改主机名

[root@localhost opt]# hostnamectl set-hostname gaussdb
[root@localhost opt]# bash

(5)查看IP地址

[root@gaussdb ~]# ip addr

(6)清空iptables规则

[root@gaussdb ~]# iptables -F
[root@gaussdb ~]# iptables -nL

2.Linux 部署 GaussDB

(1)查阅

1)官方文档下载
https://support.huaweicloud.com/download_gaussdb/index.html

2)社区
https://opengauss.org/zh/

(2) 更改内核参数

[root@gaussdb ~]# vim /etc/sysctl.conf

修改前:

修改后:

#内核参数用于控制整个 Linux 系统中信号集的最大数量
kernel.sem = 50100 128256000 50100 2560   
#每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目
net.core.netdev_max_backlog = 1000 
#这个参数标示TCP三次握手建立阶段接受SYN请求队列的最大长度,默认为1024,将其设置得大一些可以使出现Nginx繁忙来不及accept新连接的情况时,Linux不至于丢失客户端发起的连接请求 
net.ipv4.tcp_max_syn_backlog = 2048 
#控制 Linux 内核将核心转储文件写到磁盘的哪里  
kernel.core_pattern = /corefile/core.%p.%e
#控制core文件的文件名中是否添加pid作为扩展名。文件内容为1,表示添加pid作为扩展名,为0则表示不添加    
kernel.core_uses_pid = 1 
#系统范围内共享内存段的最大数量 (Minimum size of shared memory segment (bytes))   
kernel.shmmni = 4096 
#允许系统打开的端口范围  
net.ipv4.ip_local_port_range = 9000 65500
#这个参数表示内核套接字接受缓存区默认的大小,默认值比较小,网络服务器需要调高 
net.core.rmem_default = 262144
# 这个参数表示内核套接字发送缓存区默认的大小,默认值比较小,网络服务器需要调高     
net.core.wmem_default = 262144
# 这个参数表示内核套接字接受缓存区的最大大小,网络服务器需要调高    
net.core.rmem_max =  4194304 
#这个参数表示内核套接字发送缓存区的最大大小,网络服务器需要调高    
net.core.wmem_max = 1048576
#所允许的并发请求的最大个数。最大个数通常是 64KB(用来对异步 I/O 的性能进行优化)    
fs.aio-max-nr = 1048576
#这个参数表示进程(比如一个worker进程)可以同时打开的最大句柄数,这个参数直线限制最大并发连接数,需根据实际情况配置。     
fs.file-max = 6815744    

刷新内核参数

[root@gaussdb ~]# sysctl -p

(3)创建组与用户

[root@gaussdb ~]# groupadd -g 1000 dbgrp
[root@gaussdb ~]# useradd -u 1100 -g dbgrp -d /home/omm -s /bin/bash omm
[root@gaussdb ~]# id omm
uid=1100(omm) gid=1000(dbgrp) 组=1000(dbgrp)

(4)更改用户密码

[root@gaussdb ~]# echo 123456 | passwd --stdin omm

(5)创建目录

[root@gaussdb ~]# mkdir -p /usr/local/gaussdb/{app,data,logs}

(6)更改属组

[root@gaussdb ~]# chown -R omm.dbgrp /usr/local/gaussdb/

(7)查看目录

[root@gaussdb ~]# tree /usr/local/gaussdb/

(8)解压安装包

[root@gaussdb ~]# tar xf GaussDB_100_1.0.1-DATABASE-REDHAT-64bit.tar.gz

查看

[root@gaussdb ~]# cd GaussDB_100_1.0.1-DATABASE-REDHAT-64bit/
[root@gaussdb GaussDB_100_1.0.1-DATABASE-REDHAT-64bit]# ls

(9)修改脚本

[root@gaussdb GaussDB_100_1.0.1-DATABASE-REDHAT-64bit]# vim +572 install.py

修改前:

修改后:(572-573注释 或 -1改为 -2)

 572         if self.run_pkg_name.find(distname.upper().replace("OS", "")) == -2:
 573             logExit("Run package %s.tar.gz is inconsistent with os system %s." % (self.run_pkg_name, distna     me))

(10)安装脚本

python install.py \
-U omm:dbgrp \
-R /usr/local/gaussdb/app/ \
-D /usr/local/gaussdb/data/ \
-C LSNR_ADDR=127.0.0.1,192.168.204.80 \
-C LSNR_PORT=1888 \
-C DATA_BUFFER_SIZE=500M \
-C SHARED_POOL_SIZE=150M \
-C TEMP_BUFFER_SIZE=150M

成功:

Checking runner.
Checking parameters.
End check parameters.
Checking user.
End check user.
Checking old install.
End check old install.
Checking kernel parameters.
Checking directory.
Checking integrality of run file...
Decompressing run file.
Setting user env.
Checking data dir and config file
Initialize db instance.
Creating database.
Creating database succeed.
Changing file permission due to security audit.
Install successfully, for more detail information see /home/omm/zengineinstall.log.

(11)监听网络

多了zengine 服务

[root@gaussdb ~]# netstat -antpu

(12)切换用户


[root@gaussdb ~]# su - omm

[omm@gaussdb ~]$ vim .bashrc

(13)查看目录

[omm@gaussdb ~]$ ls /usr/local/gaussdb/
app  data  logs
[omm@gaussdb ~]$ ls /usr/local/gaussdb/app/
add-ons  admin  bin  lib  package.xml
[omm@gaussdb ~]$ ls /usr/local/gaussdb/data/
archive_log  cfg  data  dbs  log  protect  trc  zengine.lck

(14)登录数据库

输入y 


[omm@gaussdb ~]$ zsql sys/Changeme_123@127.0.0.1:1888

Warning: SSL connection to server without CA certificate is insecure. Continue anyway? (y/n):y
connected.


SQL> exit

免密登录

[omm@gaussdb ~]$ zsql sys/Changeme_123@127.0.0.1:1888 -q

connected.


SQL> exit

(15)修改密码

SQL> ALTER USER SYS IDENTIFIED BY 'Admin@123';

(16)查看数据库

SQL> SELECT DBID,NAME,STATUS,OPEN_STATUS FROM dv_database;

查看版本

SQL> SELECT * FROM dv_version;

3.Linux 使用 GaussDB 

(1)查看命令脚本

[omm@gaussdb ~]$ ls /usr/local/gaussdb/app/bin/
Common.py  GaussLog.py  shutdowndb.sh  sql_process.py  uninstall.py  zctl.py  zencrypt  zengine  zsql

(2)安装依赖包 (root用户)

[root@gaussdb ~]# yum -y install lsof

(3)查看状态

[root@gaussdb ~]# su - omm

[omm@gaussdb ~]$ zctl.py -t status

(4)关闭服务

[omm@gaussdb ~]$ zctl.py -t stop
Successfully stopped instance.
[omm@gaussdb ~]$ zctl.py -t status
Zengine instance has not started.
[root@gaussdb ~]# cd /usr/local/gaussdb/app/admin/scripts
[root@gaussdb scripts]# vim create_database.sample.sql

(5)启动服务

[omm@gaussdb ~]$ zctl.py -t start
Successfully started instance.
[omm@gaussdb ~]$ zctl.py -t status
Current instance STATUS OPEN

(6)切换状态

NOMOUNT状态

[omm@gaussdb ~]$ zctl.py -t stop
Successfully stopped instance.
[omm@gaussdb ~]$ zctl.py -t start -m nomount
Successfully started instance.
[omm@gaussdb ~]$ zctl.py -t status
Do zctl failed: Failed to get status, maybe it's NOMOUNT.

MOUNT状态

[omm@gaussdb ~]$ zctl.py -t stop
Successfully stopped instance.
[omm@gaussdb ~]$ zctl.py -t start -m mount
Successfully started instance.
[omm@gaussdb ~]$ zctl.py -t status
Current instance STATUS MOUNT

(7)切回默认状态

[omm@gaussdb ~]$ zctl.py -t stop
Successfully stopped instance.
[omm@gaussdb ~]$ zctl.py -t start
Successfully started instance.
[omm@gaussdb ~]$ zctl.py -t status
Current instance STATUS OPEN

观察网络变化 (在TCP四次挥手时,主动关闭端发送了ACK包之后,进入TIME_WAIT状态,等待最多MSL时间,让被动关闭端收到ACK包。)

观察网络变化 (30秒-1分钟)

(8)查看库文件 (root用户)

[root@gaussdb ~]# ls /usr/local/gaussdb/app/admin/scripts
add_standby_log.sample.sql  initdb.sql     initview.sql  readme.md    upgrade
create_database.sample.sql  initplsql.sql  initwsr.sql   sql_dialect

创建数据库

(9)连接数据库


[omm@gaussdb ~]$ zsql sys/Admin@123@127.0.0.1:1888 -q

connected.


SQL>

(10)创建与删除用户

SQL> CREATE USER david IDENTIFIED BY 'Admin@123';

Succeed.

SQL> GRANT DBA TO DAVID;

Succeed.

SQL> DROP USER DAVID;

Succeed.

(11)查看用户信息

SQL> SELECT * FROM DB_USERS;

USER_ID      USERNAME                                                         CREATED                CRYPTOPERIOD
------------ ---------------------------------------------------------------- ---------------------- ------------------------
0            SYS                                                              2024-03-18 12:31:29    +0000179 23:04:23.655845
1            PUBLIC                                                           2024-03-18 12:31:29    +0000179 22:38:29.319123

2 rows fetched.

再次创建查看

SQL> CREATE USER david IDENTIFIED BY 'Admin@123';

Succeed.

SQL> SELECT * FROM DB_USERS;

USER_ID      USERNAME                                                         CREATED                CRYPTOPERIOD
------------ ---------------------------------------------------------------- ---------------------- ------------------------
0            SYS                                                              2024-03-18 12:31:29    +0000179 23:02:48.336284
1            PUBLIC                                                           2024-03-18 12:31:29    +0000179 22:36:53.999562
2            DAVID                                                            2024-03-18 13:54:15    +0000179 23:59:39.974081

3 rows fetched.

查看所有用户

SQL> SELECT * FROM all_users;

USER_ID      USERNAME                                                         CREATED                CRYPTOPERIOD
------------ ---------------------------------------------------------------- ---------------------- ------------------------
0            SYS                                                              2024-03-18 12:31:29    +0000179 22:55:39.756470
1            PUBLIC                                                           2024-03-18 12:31:29    +0000179 22:29:45.419748
2            DAVID                                                            2024-03-18 13:54:15    +0000179 23:52:31.394267

3 rows fetched.

(12)查看表

SQL> SELECT * FROM user_tables;

最后一行显示86个

查看系统所有表 (一共86行)

SQL> SELECT * FROM all_tables;

查看管理员表(一共86行)

SQL> SELECT * FROM dba_tables;

(13)创建表

SQL> CREATE TABLE DEVOPS(
  2 id INT,
  3 name CHAR(20)
  4 );

Succeed.

查看表

SQL> SELECT * FROM USER_TABLES WHERE TABLE_NAME='DEVOPS';

查看表字段

SQL> DESC DEVOPS;

Name                                Null?    Type
----------------------------------- -------- ------------------------------------
ID                                           BINARY_INTEGER
NAME                                         CHAR(20 BYTE)

(14)修改表

添加字段

SQL> ALTER TABLE DEVOPS ADD age INT;

查看表字段

SQL> DESC DEVOPS;

修改字段类型

SQL> ALTER TABLE DEVOPS MODIFY AGE TINYINT;

(15)修改字段名

SQL> ALTER TABLE DEVOPS RENAME COLUMN NAME TO USER_NAME;

查看

(16)删除字段

SQL> ALTER TABLE DEVOPS DROP AGE;

查看

(17)修改表名

SQL> ALTER TABLE DEVOPS RENAME TO CICD;

查看

(18)删除表

SQL> DROP TABLE CICD;

4.使用 GaussDB 进行表与索引操作

(1) 创建表

SQL> CREATE TABLE USERS(
  2 ID INT NOT NULL DEFAULT 0,
  3 NAME CHAR(200) NOT NULL DEFAULT ''
  4 );

(2)查看表字段

SQL> DESC USERS;

Name                                Null?    Type
----------------------------------- -------- ------------------------------------
ID                                  NOT NULL BINARY_INTEGER
NAME                                NOT NULL CHAR(200 BYTE)

(3)字段插入记录

单个记录插入

SQL> INSERT INTO USERS VALUES (1,'JACK');

SQL> INSERT INTO USERS VALUES (2,'TOM');

多个记录连续插入

SQL> INSERT INTO USERS(ID,NAME) VALUES
  2 (3,'HELEN'),(4,'JOHN');

查看

SQL> SELECT * FROM users;

ID           NAME
------------ ----------------------------------------------------------------
1            JACK                                                                                                                                                     
2            TOM                                                                                                                                                      
3            HELEN                                                                                                                                                    
4            JOHN                                                                                                                                                     

4 rows fetched.

(4)修改数据

SQL> UPDATE USERS SET NAME='TONY' WHERE ID=2;

查看

(5)清空表

SQL> DELETE FROM USERS;

查看

(6)创建索引

SQL> CREATE INDEX name ON USERS(NAME);

查看

SQL> SELECT OWNER,INDEX_NAME,TABLE_NAME FROM all_indexes WHERE TABLE_NAME='USERS';

(7)查看索引

SQL> SELECT * FROM ALL_IND_COLUMNS WHERE TABLE_NAME='USERS';

(8)删除索引

SQL> DROP INDEX NAME;

5.使用 GaussDB 进行视图操作

(1)创建表

SQL> CREATE TABLE userinfo(
  2 ID INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
  3 NAME CHAR(200),
  4 TEL CHAR(11),
  5 CARD_ID CHAR(18)
  6 );

查看

(2)插入数据

SQL> INSERT INTO USERINFO(NAME,TEL,CARD_ID)
  2 VALUES
  3 ('jack','11111111111','0001'),
  4 ('tom','22222222222','0002'),
  5 ('helen','33333333333','0003');

查看

(3)测试

截取

SQL> SELECT SUBSTR('ABCDEFG',3,3);

替换

SQL> SELECT REPLACE('abcdefaaa','a','A');

(4)隐藏信息


SQL> SELECT
  2  NAME,
  3 REPLACE(CARD_ID,SUBSTR(CARD_ID,4,1),'*')
  4 FROM USERINFO;

(5)创建视图

SQL> CREATE VIEW EN_USERINFO
  2 AS
  3 SELECT
  4 NAME,
  5  REPLACE(CARD_ID,SUBSTR(CARD_ID,4,1),'*')
  6 FROM USERINFO;

(6)查看视图

SQL> SELECT * FROM EN_USERINFO;

(7)删除视图

SQL> drop VIEW EN_USERINFO;

6.使用 GaussDB 进行联表查询

(1)创建表

表一

SQL> CREATE TABLE DEPTS(
  2 ID INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
  3 NAME CHAR(200)
  4 );

表二

SQL> CREATE TABLE EMPS(
  2 ID INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
  3 NAME CHAR(200),
  4 DEPT_ID INT NOT NULL
  5 );

(2)查看

SQL> DESC DEPTS;DESC EMPS;

Name                                Null?    Type
----------------------------------- -------- ------------------------------------
ID                                  NOT NULL BINARY_INTEGER
NAME                                         CHAR(200 BYTE)


Name                                Null?    Type
----------------------------------- -------- ------------------------------------
ID                                  NOT NULL BINARY_INTEGER
NAME                                         CHAR(200 BYTE)
DEPT_ID                             NOT NULL BINARY_INTEGER

(3)插入数据

SQL> INSERT INTO DEPTS(NAME) VALUES ('DEV'),('NETWORK'),('IT');

额外创建一个不存在的4号部门员工

SQL> INSERT INTO EMPS(NAME,DEPT_ID) VALUES
  2  ('jasmine',1),('machael',2),('simon',3),('hulk',4);

(4)查看表

(5)内连接

SQL> SELECT * FROM EMPS
  2 INNER JOIN DEPTS
  3 ON EMPS.DEPT_ID=DEPTS.ID;

ID           NAME                                                             DEPT_ID      ID           NAME
------------ ---------------------------------------------------------------- ------------ ------------ ----------------------------------------------------------------
1            jasmine                                                                                                                                                                                                  1            1            DEV                                                                                                                   
2            machael                                                                                                                                                                                                  2            2            NETWORK                                                                                                               
3            simon                                                                                                                                                                                                    3            3            IT  

SQL> SELECT EMPS.NAME,DEPTS.NAME FROM EMPS
  2 INNER JOIN DEPTS
  3 ON DEPTS.ID=EMPS.DEPT_ID;

NAME                                                             NAME
---------------------------------------------------------------- ----------------------------------------------------------------
jasmine                                                                                                                                                                                                  DEV                                                                                                                                                          
machael                                                                                                                                                                                                  NETWORK                                                                                                                                                      
simon                                                                                                                                                                                                    IT                                                                                                                                                           

3 rows fetched.

(6)外连接

左外连接

SQL> SELECT * FROM EMPS
  2 LEFT OUTER JOIN DEPTS
  3 ON EMPS.DEPT_ID=DEPTS.ID;

ID           NAME                                                             DEPT_ID      ID           NAME
------------ ---------------------------------------------------------------- ------------ ------------ ----------------------------------------------------------------
1            jasmine                                                                                                                                                                                                  1            1            DEV                                                                                                                   
2            machael                                                                                                                                                                                                  2            2            NETWORK                                                                                                               
3            simon                                                                                                                                                                                                    3            3            IT                                                                                                                    
4            hulk                                                                                                                                                                                                     4

4 rows fetched.

右外连接

SQL> SELECT * FROM EMPS
  2 RIGHT OUTER JOIN DEPTS
  3 ON EMPS.DEPT_ID=DEPTS.ID;

ID           NAME                                                             DEPT_ID      ID           NAME
------------ ---------------------------------------------------------------- ------------ ------------ ----------------------------------------------------------------
1            jasmine                                                                                                                                                                                                  1            1            DEV                                                                                                                   
2            machael                                                                                                                                                                                                  2            2            NETWORK                                                                                                               
3            simon                                                                                                                                                                                                    3            3            IT                                                                                                                    

3 rows fetched.

全外连接

SQL> SELECT * FROM EMPS
  2 FULL OUTER JOIN DEPTS
  3  ON EMPS.DEPT_ID=DEPTS.ID;

ID           NAME                                                             DEPT_ID      ID           NAME
------------ ---------------------------------------------------------------- ------------ ------------ ----------------------------------------------------------------
1            jasmine                                                                                                                                                                                                  1            1            DEV                                                                                                                   
2            machael                                                                                                                                                                                                  2            2            NETWORK                                                                                                               
3            simon                                                                                                                                                                                                    3            3            IT                                                                                                                    
4            hulk                                                                                                                                                                                                     4

4 rows fetched.

7.使用 GaussDB 进行外键关联

(1)查看

SQL> DELETE FROM EMPS WHERE ID=4;

SQL> SELECT * FROM EMPS;

(2)添加外键

级联删除

SQL> ALTER TABLE EMPS ADD CONSTRAINT DID FOREIGN KEY(DEPT_ID) REFERENCES DEPTS(ID) ON DELETE CASCADE;

(3)创建表时指定外键

SQL> CREATE TABLE EMPLOYESS(
  2 ID INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
  3 NAME CHAR(20),
  4 DEPT_ID INT NOT NULL,
  5 FOREIGN KEY (DEPT_ID) REFERENCES DEPTS(ID) ON DELETE CASCADE);

二、问题

1.运行python脚本报错

(1)报错

在执行python install安装数据库时,安装中止

Error: Run package GaussDB_100_1.0.1-RUN-REDHAT-64bit.tar.gz is inconsistent with os system centos.
Please refer to install log "/home/omm/zengineinstall.log" for more detailed information.

(2)原因分析

在安装执行check时,发现操作系统与安装包内预置check的结果不一致。

(3)解决方法

[root@gaussdb GaussDB_100_1.0.1-DATABASE-REDHAT-64bit]# vim +572 install.py

修改前:

修改后:(572-573注释 或 -1改为 -2)

 572         if self.run_pkg_name.find(distname.upper().replace("OS", "")) == -2:
 573             logExit("Run package %s.tar.gz is inconsistent with os system %s." % (self.run_pkg_name, distna     me))

成功:

2. 安装GaussDB 报错

(1)报错

Error: Can not read user profile: [Errno 2] No such file or directory: '/home/omm/.bashrc'

(2)原因分析

缺少目录启动配置文件。

(3)解决方法

创建文件 

vim /home/omm/.bashrc
if [ -f /etc/bashrc ]; then
         . /etc/bashrc
fi

 

成功:

3. install 安装有哪些参数

(1)参数

1)指定安装用户和用户组
-U

2)指定安装目录
-R

3)指定数据文件目录,即GAUSSDATA目录
-D

4)指定配置参数,可以指定多个。如果不指定,则按照/opt/gaussdb/data/cfg/zengine.ini 中的默认配置项。
-C

5)在安装时,如果禁用免密登录,则需要在命令行最后指定此选项。命令执行过程中,会提示输入连接数据库的用户名和密码,用户名时SYS,密码是SYS用户的初始密码Changeme_123。如果开启免密登录则不许套指定本选项。
-P

4. GaussDB有哪些服务状态

(1)状态

1)关闭
CLOSED

2)读取初始化参数文件,分配SGA并打开后台进程
NOMOUNT

3)加载数据库,根据初始化参数文件,读取控制文件信息
MOUNT

4)根据控制文件打开所有的数据文件和Redo日志,数据库可以进行访问
OPEN

5. netstat 服务状态

(1)状态

1)netstat中的各种状态
CLOSED       初始(无连接)状态。
LISTEN       侦听状态,等待远程机器的连接请求。
SYN_SEND     在TCP三次握手期间,主动连接端发送了SYN包后,进入SYN_SEND状态,等待对方的ACK包。
SYN_RECV     在TCP三次握手期间,主动连接端收到SYN包后,进入SYN_RECV状态。
ESTABLISHED  完成TCP三次握手后,主动连接端进入ESTABLISHED状态。此时,TCP连接已经建立,可以进行通信。
FIN_WAIT_1   在TCP四次挥手时,主动关闭端发送FIN包后,进入FIN_WAIT_1状态。
FIN_WAIT_2   在TCP四次挥手时,主动关闭端收到ACK包后,进入FIN_WAIT_2状态。
TIME_WAIT    在TCP四次挥手时,主动关闭端发送了ACK包之后,进入TIME_WAIT状态,等待最多MSL时间,让被动关闭端收到ACK包。
CLOSING      在TCP四次挥手期间,主动关闭端发送了FIN包后,没有收到对应的ACK包,却收到对方的FIN包,此时,进入CLOSING状态。
CLOSE_WAIT   在TCP四次挥手期间,被动关闭端收到FIN包后,进入CLOSE_WAIT状态。
LAST_ACK     在TCP四次挥手时,被动关闭端发送FIN包后,进入LAST_ACK状态,等待对方的ACK包。

2)分类
主动连接端可能的状态有:         
        CLOSED        SYN_SEND        ESTABLISHED。
主动关闭端可能的状态有:         
        FIN_WAIT_1        FIN_WAIT_2        TIME_WAIT。
被动连接端可能的状态有:         
        LISTEN        SYN_RECV        ESTABLISHED。
被动关闭端可能的状态有:         
        CLOSE_WAIT        LAST_ACK        CLOSED。

6.查询表字段报错

(1)报错

GS-00601, [1:1]Sql syntax error: key word expected

(2)原因分析

语法错误。

(3)解决方法

SQL> DESC DEVOPS;

7.添加外键报错

(1)报错

GS-00601, Sql syntax error: CASCADE/SET NULL expected but CASCADES found.

(2)原因分析

语法错误。

(3)解决方法

SQL> ALTER TABLE EMPS ADD CONSTRAINT DID FOREIGN KEY(DEPT_ID) REFERENCES DEPTS(ID) ON DELETE CASCADE;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1527964.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

广州大彩科技新品发布:大彩科技COF系列2.4寸串口屏发布!

一、产品介绍 此次发布的是S系列平台2.4寸COF超薄结构串口屏,分辨率为240*320,该平台采用了Cortex-M3内核的处理器,内置了2Mbyte PSRAM和64Mbit FLASH,是专为小尺寸串口屏设计的MCU,精简了外围电路。 该平台默认支持大…

【sql】深入理解 mysql的EXISTS 语法

相关文章: 【sql】深入理解 mysql的EXISTS 语法 【sql】初识 where EXISTS 1. 使用格式如下: select * from a where exists ( 任何子查询 ) 代码根据颜色分成两段,前面的是主查询,后面红色的是子查询,先主后子&…

从政府工作报告探计算机行业发展

文章目录 每日一句正能量前言以“数”谋新、加“数”向实人工智能方面人工智能成核心驱动引擎 软件方面通信方面后记 每日一句正能量 该来的始终会来,千万别太着急,如果你失去了耐心,就会失去更多。该走过的路总是要走过的,从来不…

Android14之HIDL报错:Invalid sparse file format at header magic(一百九十六)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

【数据结构与算法】(17):计数排序和基数排序详解

🤡博客主页:Code_文晓 🥰本文专栏:数据结构与算法 😻欢迎关注:感谢大家的点赞评论关注,祝您学有所成! ✨✨💜💛想要学习更多数据结构与算法点击专栏链接查看&…

智慧城市与数字孪生:科技融合助力城市可持续发展

随着信息技术的迅猛发展,智慧城市和数字孪生作为现代城市发展的重要理念和技术手段,正日益受到广泛关注。智慧城市通过集成应用先进的信息通信技术,实现城市管理、服务、运行的智能化,而数字孪生则是利用数字化手段对物理城市进行…

面试笔记——Redis(使用场景、面临问题、缓存穿透)

Redis的使用场景 Redis(Remote Dictionary Server)是一个内存数据结构存储系统,它以快速、高效的特性闻名,并且它支持多种数据结构,包括字符串、哈希表、列表、集合、有序集合等。它主要用于以下场景: 缓…

libmodbus编译为64位动态库

通用方法,记录一下,以便后续参考。 Step 1. 下载libmodbus源码 GitHub - stephane/libmodbus: A Modbus library for Linux, Mac OS, FreeBSD and Windows Step 2. 生成配置文件 进入libmodbus-master\src\win32目录,在该目录下打开终端&am…

【火猫TV】DOTA2 BB队员称:队伍非常具有凝聚力

1、近日BB战队队员Nightfall接受采访时表示战队自从去年获得梦幻联赛S20亚军以来,就非常具有凝聚力。 “我认为战队自从去年获得梦幻联赛S20亚军以来,战队就非常具有凝聚力。从那一刻开始,我们这群人不再只是几个选手组建起来的松散组织&…

移动云COCA架构实现算力跃升,探索人工智能新未来

近期,随着OpenAI正式发布首款文生视频模型Sora,标志着人工智能大模型在视频生成领域有了重大飞跃。Sora模型不仅能够生成逼真的视频内容,还能够模拟物理世界中的物体运动与交互,其核心在于其能够处理和生成具有复杂动态与空间关系…

C++的语法

可能需要用到存储各种数据类型(比如字符型、宽字符型、整型、浮点型、双浮点型、布尔型等) 下表显示了各种变量类型在内存中存储值时需要占用的内存,以及该类型的变量所能存储的最大值和最小值。 注意:不同系统会有所差异 #inc…

8.发布页面

发布页面 官网 https://vkuviewdoc.fsq.pub/components/form.html 复制官网中的内容 代码 write.vue <template><view class"u-wrap u-p-l-20 u-p-r-20"><u-form :model"addModel" ref"form1"><u-form-item label&quo…

出彩不停息!创维汽车SKYHOME又获国际大奖

祝贺&#xff01;创维汽车SKYHOME又获国际缪斯设计大奖&#xff01;进一步获得国际认可&#xff01; 卓越的意识、优秀的审美、无与伦比的专注&#xff0c;不仅是缪斯奖所看重的独特品质&#xff0c;也是SKYHOME设计团队在传递品牌故事中所秉持的优秀品格。作为缪斯奖青睐的设计…

干货分享 | 外贸搞钱必备!

一、谷歌搜索&#xff1a; 开发客户的神器&#xff0c;需结合搜索指令&#xff0c;常见的12大搜索指令如下&#xff1a; 1. 指令运用&#xff1a;email 说明&#xff1a;指定搜索内容&#xff0c;缩小范围&#xff0c;显示带有email的搜索结果 2.- 指令运用&#xff1a;-B2C 说…

【G. One-Dimensional Puzzle (组合数学+逆元)

解析&#xff1a; 本体是进行分类讨论这么才使全部的拼图用完&#xff0c;且可以合成多个种类。 列举其所有可以拼成的方法个数&#xff1a; 第一种&#xff1a;3 3 3 3 第二种&#xff1a; 4 4 4 4 第三种&#xff1a;1 2 1 2 第四种&#xff1a;1 3 3 2 第五种&…

新品上线 | NoV病毒抗原抗体系列,助力疫苗相关研究!

背景介绍 诺如病毒&#xff08;norovirus&#xff0c;NoV&#xff09;&#xff0c;又名诺瓦克病毒&#xff08;norwalk viruses&#xff0c;NV&#xff09;&#xff0c;是一种单链正义RNA病毒&#xff0c;引发急性胃肠炎&#xff08;AGE&#xff09;的主要原因之一。病症常伴随…

Java安全 反序列化(1) URLDNS链原理分析

Java安全 反序列化(1) URLDNS链原理分析 文章目录 Java安全 反序列化(1) URLDNS链原理分析前置知识应用分析payload1.新建HashMap类2.新建URL类3.获取URL 的 Class对象4.通过反射访问URL内部变量5.通过反射为URL中类赋值6.调用HashMap#put方法传入key和value7.再次通过反射为UR…

自己录的视频怎么配上字幕?推荐几种方法

自己录的视频怎么配上字幕&#xff1f;在数字化时代&#xff0c;视频已经成为人们获取信息、娱乐消遣的重要形式。而对于许多内容创作者来说&#xff0c;为自己的视频添加字幕不仅能提升观众的观看体验&#xff0c;还能增加视频的专业度和吸引力。那么&#xff0c;如何为自己的…

如何在Linux系统下创建共享文件?

首先共享文件一定不能在各用户的家目录下创建&#xff0c;因为各用户家目录通常都只对自己开放&#xff0c;其他用户没有权限进入目录&#xff0c;读写其中的文件。 因此&#xff0c;共享文件必须在非用户目录下创建&#xff0c;且需要将other的权限全部放开。例如&#xff0c;…

Springboot整合支付宝沙箱支付

2.配置说明 要记住这几个重要的配置 appId 这个是appIdprivateKey 商户私钥publicKey 支付宝公钥, 即对应APPID下的支付宝公钥notifyUrl 支付成功后异步回调地址(注意是必须是公网地址)returnUrl #支付后回调地址signType 签名类型 一般写 RSA2charset utf-8format json #网关…