#
#  Copyright 1999-2018 Alibaba Group Holding Ltd.
#
#  Licensed under the Apache License, Version 2.0 (the "License");
#  you may not use this file except in compliance with the License.
#  You may obtain a copy of the License at
#
#       http://www.apache.org/licenses/LICENSE-2.0
#
#  Unless required by applicable law or agreed to in writing, software
#  distributed under the License is distributed on an "AS IS" BASIS,
#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#  See the License for the specific language governing permissions and
#  limitations under the License.
#
jdbc.account.url=jdbc:mysql://${mysql.address:127.0.0.1}:3306/seata-demo
jdbc.account.username=root
jdbc.account.password=helloworld
jdbc.account.driver=com.mysql.jdbc.Driver
# storage db config
jdbc.storage.url=jdbc:mysql://${mysql.address:127.0.0.1}:3306/seata-demo
jdbc.storage.username=root
jdbc.storage.password=helloworld
jdbc.storage.driver=com.mysql.jdbc.Driver
# order db config
jdbc.order.url=jdbc:mysql://${mysql.address:127.0.0.1}:3306/seata-demo
jdbc.order.username=root
jdbc.order.password=helloworld
jdbc.order.driver=com.mysql.jdbc.Driver
