在 MariaDB 中的表创建外键的时候提示错误: SQL Error (1005): Can't create table `edx`.`TestBankAnswer` (errno: 150 "Foreign key constraint is incorrectly formed") 导致这样原因是因为你的表中没有创建 PK (主键)。 你需要在你的表上面创建主键后再创建外键就可以了。 https://www.ossez.com/t/mariadb-1005/225
在 MariaDB 中的表创建外键的时候提示错误: SQL Error (1005): Can't create table `edx`.`TestBankAnswer` (errno: 150 "Foreign key constraint is incorrectly formed") 导致这样原因是因为你的表中没有创建 PK (主键)。 你需要在你的表上面创建主键后再创建外键就可以了。 https://www.ossez.com/t/mariadb-1005/225
离开数据量谈数据库就是耍流氓。 针对高级性能,MSSQL 要比 MySQL 好得多,问题是又有多少人,多少公司用得到那些高级性能呢? 从部署,使用场景来说:相对来说 MSSQL 的部署难度,服务器要求都要比 MySQL 高得多得多。对 Linux 相对熟悉的人能够在 10 分钟内部署一个可以用的 MySQL 数据库,抛开优化不考虑,这个数据库支持几个 TB 的数据还是没有什么太大问题的。就现在来说一般的中小公司在开发测试上 MySQL 足够用了,就算跑生产机也不会有太大的问题,现在还有一个 MySQL 的姐妹版本叫做 MariaDB,能够让你逃离 Oracle 的魔掌。 更极端的情况,如果你有个树莓派,你可以在你的树莓派上部署一个独立的数据库,这个独立的数据库在 Web 开发中支持你的开发环境和数据库,也问题不大,也比较好玩,部署时间不超过 10 分钟。这个对 MSSQL 和 ORACLE 来说是根本不可能的。 这样能够让公司更加专注业务场景的开发,而不是纠结使用哪个数据库。 免费:MSSQL 和 ORACLE 的数据库使用许可证对很多公司来说可是一笔不小的投入,这个其实就等于买个保险。很多 ORACLE 的高级功能真的很少用到。写到 Oracle 的存储过程,有时候和看天书差不多,可维护性极差。另外如果你要升级 Oracle 和 MSSQL 的话,恭喜你,你可能不但蛋疼,还钱包疼,甚至有可能全身疼。 去中心数据库化:随着微服务,云计算和很多概念的兴起,很多公司都开始着手去中心数据库化。也是为了数据安全和降低使用成本考虑。在这种环境下 MySQL 反而有着先天优势,快速部署,可优化,技术上不受制于人。 看你的数据量吧,对现在的计算机性能来说,如果不是非常巨大,偶尔重启下都不是什么问题的没有必要在各个数据库之间纠结。快速部署,快速开发,实现业务这个才是王道。
在CentOS 安装 MariaDB 数据库的时候,yum 安装显示没有匹配的安装包。 我们应该如何配置能够让安装成功呢? 你需要在你的 CentOS 中编辑 /etc/yum.repos.d/MariaDB.repo 文件。 这个文件的内容,你可以访问: https://downloads.mariadb.org/mariadb/repositories/#distro=CentOS&mirror=supportex 找到。 通过上面的链接,你可以找到你需要的仓库配置。 例如 MariaDB 10.4 的配置如下: # MariaDB 10.4 CentOS repository list - created 2020-05-06 05:31 UTC # http://downloads.mariadb.org/mariadb/repositories/ [mariadb] name = MariaDB baseurl = http://yum.mariadb.org/10.4/centos7-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1 如果你只需要安装服务器,你就可以执行: sudo yum install MariaDB-server 命令进行安装就可以了。 https://www.cwiki.us/display/MariaDB/questions/62619658
安装的过程比较简单。 但是这里有一个地方需要注意,如果你希望是能够通过网络访问你安装的数据库的话。 在你设置好用户名和密码,以及访问权限后,你可能发现你还是访问不了。 这是因为你的安装服务器只绑定了能够本地访问,你需要修改配置,让你的服务器能够支持远程访问。 具体的方法,请参考 RaspberryPi(树莓派)安装 MariaDB 数据库没有办法远程访问 页面中的文章。 更新系统 通过运行命令: sudo apt-get update 来对你需要安装的系统进行更新,根据网络的情况可能需要的时间也不相同。 我们更新后系统的输出内容为: [email protected]:~# sudo apt-get update Hit:1 http://archive.raspberrypi.org/debian buster InRelease Get:2 http://raspbian.raspberrypi.org/raspbian buster InRelease [15.0 kB] Get:3 http://raspbian.raspberrypi.org/raspbian buster/main armhf Packages [13.0 MB] Fetched 13.0 MB in 19s (694 kB/s) Reading package lists... Done [email protected]:~# 安装数据库 通过下面的情况就可以自动执行安装了: sudo apt-get install mariadb-server 设置安全 当服务器安装完成后,你需要运行: sudo mysql_secure_installation 来为你的数据库设置安全。 主要这个用途是设置你 root 的密码,root 的远程访问权限,是否允许匿名访问,是否允许远程访问等。 如果你只是测试在本地使用这个数据库,你可以不用设置这个。 但是我们还是建议你设置。 单独设置一个可以远程访问的用户 你可以单独设置一个用户能具有足够 root 的权限执行所有操作,可以进行远程访问。 你也可以使用 root 用户进行配置,但是我们不建议你使用 root 用户。 在你安装的服务器上,使用 mysql 登录到服务器上。 然后执行下面的命令: CREATE USER 'honeymoose'@'%' IDENTIFIED BY '12345678'; GRANT USAGE ON *.* TO 'honeymoose'@'%'; GRANT ALL PRIVILEGES ON *.* TO 'honeymoose'@'%' IDENTIFIED BY '12345678' WITH GRANT OPTION; FLUSH PRIVILEGES; 请注意,上面的命令是在你使用 root 登录到服务器上后进行数据库的授权的。 执行上面 SQL 的意图是,创建一个用户,为用户赋权。 修改配置允许远程访问 如果你现在进行远程连接 MariaDB / MySQL 的时候,你会收到连接 10061 的错误。 按照我们前面的提示,这是因为绑定的问题。 旧版本的MySQL修改/etc/mysql/my.cnf文件,修改内容相同。 如果你的服务上的版本没有这个文件的话,新版本的服务器,你需要修改: /etc/mysql/mariadb.conf.d/50-server.cnf 这个文件。 注释掉 ’bind-address 必要的话,可以尝试重启服务器。 重启服务器的命令是: [email protected]:~# service mariadb restart 查看数据库服务器进程是是否运行的命令是: service mariadb status 如果服务器输出下面的信息,表示服务器已经运行了,你可以尝试使用 Client 远程进行连接了。 [email protected]:~# service mariadb status ● mariadb.service - MariaDB 10.3.22 database server Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2020-04-05 10:57:14 EDT; 11s ago Docs: man:mysqld(8) https://mariadb.com/kb/en/library/systemd/ Process: 1691 ExecStartPre=/usr/bin/install -m 755 -o mysql -g root -d /var/run/mysqld (code=exited, status=0/SUCCESS) Process: 1692 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS) Process: 1694 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= || VAR=`/usr/bin/galera_recovery`; [ $? -eq 0 ] && systemctl set-environment _WSREP_START_POSITION=$VAR || exit 1 (code=exited, status=0/SUCCESS Process: 1771 ExecStartPost=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS) Process: 1773 ExecStartPost=/etc/mysql/debian-start (code=exited, status=0/SUCCESS) Main PID: 1740 (mysqld) Status: "Taking your SQL requests now..." Tasks: 31 (limit: 4035) Memory: 47.7M CGroup: /system.slice/mariadb.service └─1740 /usr/sbin/mysqld Apr 05 10:57:13 raspberrypi systemd[1]: Starting…
在 RaspberryPi(树莓派) 上安装 MariaDB 或者 MySQL 数据库的时候。 设置的用户没有办法通过网络远程登录。 首先确定的是,用户已经设置了访问权限。 提示的错误信息是: ERROR 2002 (HY000): Can't connect to MySQL server on '192.168.0.201' (115) 其中地址 192.168.0.201 是 RaspberryPi(树莓派)的地址 这里是一个有关 RaspberryPi(树莓派)的配置问题。 你可以使用 nano /etc/mysql/mariadb.conf.d/50-server.cnf 编辑这个文件。 找到 #bind-address = 127.0.0.1 这个语句。 如果你没有注释掉这个语句的话,你需要注释掉。 因为如果你不注释掉这个,你的 MariaDB 数据库只会绑定 127.0.0.1 的地址,这样的话你只能在 localhost 上登录。 随后你可以尝试通过网络访问你的数据库了。 https://www.cwiki.us/questions/57938841
服务器是运行在 MariaDB 10.2 上面的,在使用 MySQL Workbench 出现错误: mysqldump: Couldn't execute 'SELECT COLUMN_NAME, JSON_EXTRACT(HISTOGRAM, '$."number-of-buckets-specified"') FROM information_schema.COLUMN_STATISTICS WHERE SCHEMA_NAME = 'mls' AND TABLE_NAME = 'office';': Unknown table 'COLUMN_STATISTICS' in information_schema (1109) 这看起来应该是 MySQL Workbench 使用的 mysqldump 版本和服务器的版本不兼容的问题。 你可以现在 MariaDB 的 ZIP 包解压后到你本地机器上。 然后在 MySQL Workbench 上配置使用 MariaDB 自带的 dump 程序。 https://www.cwiki.us/display/MariaDB/questions/41680979/mariadb-%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%9C%A8-mysql-workbench-%E5%A4%87%E4%BB%BD%E6%95%B0%E6%8D%AE%E7%9A%84%E6%97%B6%E5%80%99%E5%87%BA%E9%94%99