更新sql_db_plugin代码
git clone https://github.com/superoneio/eos_sql_db_plugin
cp -rv eos_sql_db_plugin/sql_db_plugin/* /home/surou/Documents/github/eos/plugins/sql_db_plugin
对比了以下几个维护的sql_db_plugin版本代码
- EOSIO
- kesar-sql_plugin分支
- superoneio
其中superoneio的版本,发帖此时是更新最新,最全的。
开启sql_db_plugin编译支持
- 打开
eos/plugins/CMakeLists.txt
取消add_subdirectory(sql_db_plugin)
前面的#
注释 - 打开
eos/programs/nodeos/CMakeLists.txt
// 取消下面代码前的注释,如果无注释,则忽略此步骤。 if(TARGET sql_db_plugin) target_link_libraries( nodeos PRIVATE -Wl,${whole_archive_flag} sql_db_plugin -Wl,${no_whole_archive_flag} ) endif()
重新编译EOS
./eosio_build.sh cd build sudo make install
编译完成后,执行
nodeos --help | grep "sql_db-uri"
如果输出如下内容,证明编译成功。
–sql_db-uri arg Sql DB URI connection string If not
Mysql 8.0 安装
- 参考 Ubuntu 安装MySql 8.0
- 接下来我们安装 soci。soci 是 C++ 连接 MySQL 的 Library。Ubuntu 可以快速安装,命令如下:
sudo apt-get -y install libsoci-dev
- 安装 mysql-client
sudo apt-get -y install mysql-client sudo apt-get install libmysqlclient-dev
配置Eos数据库
- 进入mysql
mysql -p
- 创建数据库以及分配账号
CREATE DATABASE eos DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; GRANT ALL PRIVILEGES ON eos.* TO 你的账户名@'%' IDENTIFIED BY '你的密码'; GRANT ALL PRIVILEGES ON eos.* TO 你的账户名@'127.0.0.1' IDENTIFIED BY '你的密码';
- 查看数据库
mysql > show databases;
- 导入数据库(eos.db)
mysql > use eos; //切换到eos 数据库 mysql > source eos_sql_db_plugin/sql_db_plugin/eos.db; //导入数据库
执行数据同步
nodeos --sql_db-uri="mysql://db=eos user=root host=127.0.0.1 password='数据库密码'" --sql_db-block-start=0 --delete-all-blocks
常见问题
- ERROR 1273 (HY000): Unknown collation: 'utf8mb4_0900_ai_ci'
MySql 8.0才支持的默认字符集 - 查看Ubuntu版本
cat /etc/issue