我真的需要一些帮助,在过去的两天里我一直在想办法。
我正在尝试将一个laravel项目从Mongo迁移到Cassandra。我使用docker容器进行本地设置,
这是docker compose。包含相关信息的yml文件
version: '2'
services:
mongodb:
image: mongo
container_name: marketdata_mongodb
environment:
- MONGODB_DATABASE=marketdata
- MONGODB_USER=marketdata
- MONGODB_PASS=marketdata
- MONGO_DATA_DIR=/data/db
volumes:
- ./data/db:/data/db
ports:
- 27017
networks:
- main_network
cassandra:
image: cassandra
container_name: marketdata_cassandra
command: bash -c 'if [ -z "$$(ls -A /var/lib/cassandra/)" ] ; then sleep 0; fi && /docker-entrypoint.sh cassandra -f'
environment:
- CASSANDRA_CLUSTER_NAME=dev_cluster
# Cassandra ulimt recommended settings
ulimits:
memlock: -1
nproc: 32768
nofile: 100000
volumes:
- ./cassandra_data:/var/lib/cassandra
ports:
- 7000
- 7001
- 7199
- 9042
- 9160
networks:
- main_network
networks:
main_network:
driver: bridge
在谷歌上搜索了一下后,我找到了这个图书馆
https://github.com/cubettech/lacassa
我一直在尝试在
该项目连接到我的Cassandra容器,但一直无法做到这一点。
以下是我到目前为止为实现这一目标所采取的步骤
我使用以下命令安装了php Cassandra驱动程序依赖项
wget http://downloads.datastax.com/cpp-driver/ubuntu/16.04/dependencies/libuv/v1.11.0/libuv_1.11.0-1_amd64.deb
wget http://downloads.datastax.com/cpp-driver/ubuntu/16.04/dependencies/libuv/v1.11.0/libuv-dev_1.11.0-1_amd64.deb
wget http://downloads.datastax.com/cpp-driver/ubuntu/16.04/cassandra/v2.8.0/cassandra-cpp-driver-dev_2.8.0-1_amd64.deb
wget http://downloads.datastax.com/cpp-driver/ubuntu/16.04/cassandra/v2.8.0/cassandra-cpp-driver_2.8.0-1_amd64.deb
dpkg -i libuv_1.11.0-1_amd64.deb
dpkg -i libuv-dev_1.11.0-1_amd64.deb
dpkg -i cassandra-cpp-driver_2.8.0-1_amd64.deb
dpkg -i cassandra-cpp-driver-dev_2.8.0-1_amd64.deb
apt-get install libgmp-dev
pecl install cassandra
echo "extension=cassandra.so" >> /etc/php/7.0/apache2/php.ini
echo "extension=cassandra.so" >> /etc/php/7.0/cli/php.ini
我将服务提供商添加到配置/应用程序文件中
Cubettech\Lacassa\CassandraServiceProvider::class
我还将cassandra的新数据库连接添加到配置/数据库文件中
'cassandra' => [
'driver' => 'Cassandra',
'host' => env('DB_HOST', 'localhost'),
'port' => env('DB_PORT', 7199),
'keyspace' => env('DB_DATABASE', 'cassandra_db'),
'username' => env('DB_USERNAME', ''),
'password' => env('DB_PASSWORD', ''),
],
这些是我的环境变量
DB_CONNECTION=cassandra
DB_HOST=marketdata_cassandra
DB_PORT=7199
DB_DATABASE=marketdata
DB_USERNAME=marketdata
DB_PASSWORD=marketdata
根据我找到的所有文档,这应该足以让它启动并运行,但我一直遇到这个错误
没有可用于控制连接的主机
在试图找出问题的时候,我遇到了
this
,则,
也就是说,这个问题可以通过升级PHP驱动程序/扩展来解决,所以我尝试了几种不同的扩展
here
,但我仍然有同样的问题。
任何帮助都将不胜感激