প্লে ফ্রেমওয়ার্ক 2.0 সহ মাইএসকিউএল ডাটাবেস ব্যবহারের জন্য প্রয়োজনীয় পদক্ষেপগুলি


91

আমি প্লে ফ্রেমওয়ার্কে নতুন। আমি মাইএসকিউএল ডাটাবেসটিকে প্লে ইবিনের সাথে ব্যবহারের জন্য ডেটাসোর্স হিসাবে কনফিগার করার চেষ্টা করছি।

আপনি কি দয়া করে প্লে ২.০ ফ্রেমওয়ার্কের সাথে মাইএসকিউএল কনফিগার করতে প্রয়োজনীয় পদক্ষেপগুলি ব্যাখ্যা করতে পারেন (যেমন, ড্রাইভার ডাউনলোড করা, নির্ভরতা যুক্ত করা ইত্যাদি)।

উত্তর:


102

প্লে এর ডকুমেন্টেশন থেকে এই পৃষ্ঠাটি দেখুন । এটা বলে:

এইচ 2 ইন-মেমরি ডাটাবেস বাদে বেশিরভাগ ডেভলপমেন্ট মোডে কার্যকর, Play 2.0 কোনও ডাটাবেস ড্রাইভার সরবরাহ করে না। ফলস্বরূপ, উত্পাদন স্থাপনার জন্য আপনাকে অ্যাপ্লিকেশন নির্ভরতা হিসাবে আপনার ডাটাবেস ড্রাইভার যুক্ত করতে হবে।

উদাহরণস্বরূপ, আপনি যদি মাইএসকিউএল 5 ব্যবহার করেন তবে আপনাকে সংযোজকের জন্য নির্ভরতা যুক্ত করতে হবে:

val appDependencies = Seq(
    // Add your project dependencies here,
    ...
    "mysql" % "mysql-connector-java" % "5.1.18"
    ...
)

এসবিটি আপনার জন্য ড্রাইভার ডাউনলোড করবে। নির্ভরতা পরিচালনার জন্য আপনার বিভাগটিও পরীক্ষা করা উচিত ।

মাইএসকিউএলে কানেক্ট করার জন্য আপনাকে এগুলির মধ্যে কিছু সেটিংস পরিবর্তন করতে হবে application.conf:

db.default.driver=com.mysql.jdbc.Driver
db.default.url="mysql://root:secret@localhost/myDatabase"

ধন্যবাদ এটি শেষ হয়ে গেলে, আমার অ্যাপ্লিকেশন। কনফ ফাইলটিতে কনফিগারেশন পরিবর্তনগুলি কী করা উচিত? (db.default.driver, db.default.url, ইত্যাদি)
ভীরা

@ কার্স্টেন, উদ্ধৃতি ব্যতীত ইউআরএল দেওয়া ব্যর্থ হবে
বাইসিয়র

4
ফ্রেমওয়ার্ক এখানে খেলুন 2.1.1। বিল্ড.এসবিটি আপডেট করার পরে আপনার প্লে টার্মিনালে 'আপডেট' কমান্ডটি দেওয়া উচিত
কিনজল দীক্ষিত

9
আজকাল, এটি প্রকল্পের মূল-স্তরে বিল্ড.এসবিটিতে যুক্ত করা উচিত, যেমন: লাইব্রেরি নির্ভরতা ++ = সেক (জাভাজেডিবিসি, জাভাবেইন, "মাইএসকিএল"% "মাইএসকিএল-সংযোজক-জাভা"% "5.1.28", ক্যাশে)
অ্যাড্রিয়ান স্কট

আপনি যখন এটি কাজ করে চলেছেন তখন আপনাকে ডক্সের থ্রেড পুল বিভাগটি পড়তে হবে এবং সেই অনুযায়ী আপনার কনফিগারেশন আপডেট করা উচিত কারণ জেডিবিসি একটি ব্লকিং এপিআই। playframework.com/docamentation/2.2.x/ থ্রেডপুলস
জোহানান্দ্রেন

94

কার্স্টেন যেমন লিখেছেন এটি ডকুমেন্টেশন থেকে আনা যায়, তবে এখানে একটি সংক্ষিপ্তসার দেওয়া হল:

আপনার নির্ভরতা কনফিগার করা আছে তা নিশ্চিত করুন /project/Build.scala

val appDependencies = Seq(
    // Add your project dependencies here,
    "mysql" % "mysql-connector-java" % "5.1.18"
)

এতে ডিবি (ডিফল্ট এইচ 2 কনফিগার প্রতিস্থাপন) এর সঠিক কনফিগারেশন যুক্ত করুন /conf/application.conf:

(ইউআরএল থেকে এনকোডিং অপসারণ করবেন না):

db.default.driver=com.mysql.jdbc.Driver
db.default.url="jdbc:mysql://localhost/your_db_name?characterEncoding=UTF-8"
db.default.user=your_login
db.default.password=your_pass

একই ফাইলে এটি সন্ধান করুন এবং নিশ্চিত করুন যে এই লাইনটি মন্তব্য করা হয়নি:

ebean.default="models.*"

এগুলি হ'ল, আপনার অ্যাপ্লিকেশনটি পুনরায় চালু করুন (বা দেব মোডে চলুন), তারপরে এটি একটি ডিডিএল তৈরি করবে এবং আপনাকে এটি প্রয়োগ করতে বলবে।


আপনি কি দয়া করে এখানে ডকুমেন্টেশন আপডেট করতে পারবেন github.com/playframework/playframework/blob/2.2.x/docamentation/… যাতে সবাই উপকার করতে পারে? ধন্যবাদ!
ল্যাভিক্সু

অন্যান্য বিষয় বিবেচনা করার বিষয়টি হ'ল মাইএসকিউএল কেবল সকেট সংযোগের মধ্যে সীমাবদ্ধ নয় তা নিশ্চিত করা (ম্যাক / লিনাক্স) এবং localhostএটির সাথে প্রতিস্থাপনের প্রয়োজন হতে পারে 127.0.0.1। Specifict পদ, ব্যবহারে MariaDB MacPorts থেকে (মাইএসকিউএল জন্য প্রতিস্থাপন একটি ওরাকল-মুক্ত ড্রপ) আমি মন্তব্য করতে হয়েছিল লাফালাফি-নেটওয়ার্কিং মধ্যে my.cnfএবং ব্যবহার IP ঠিকানা পরিবর্তে localhostসফলভাবে কানেক্ট খেলুন আছে।
seron

আপনি ডিবি ইউআরএল শুরুতে জেডিবিসি যুক্ত করলেন কেন?
বেনমোরগানআইও

@ বেনমোরগানআইওর কারণে আমাদের জেডিবিসি ড্রাইভার, এমন একটি বাক্য গঠন, আরও কিছু ব্যবহার করার প্রয়োজন নেই
বাইসিয়র

আমি বিভ্রান্ত ইউআরএলে "জেডিবিসি: মাইএসকিএল:" এর উদ্দেশ্য কী? "Jdbc: mysql" ডাটাবেসের নাম?
মাইকেল লাফায়েট

10

আমি ২.২.০ প্লে ব্যবহার করছি এবং প্রকল্পের মূল ফোল্ডারে বিল্ড.এসবিটি করতে আমাকে কেবল নিম্নলিখিত লাইনটি যুক্ত করতে হয়েছিল।

  "mysql" % "mysql-connector-java" % "5.1.27"

এবং স্বয়ংক্রিয়ভাবে ড্রাইভার ডাউনলোড করুন। দেখে মনে হচ্ছে বিল্ড.স্কালার আর প্রয়োজন নেই। উপরের মন্তব্যকারীরা যেমন উল্লেখ করেছেন তেমনভাবে প্রয়োগ.কনফের পরিবর্তনগুলি প্রয়োগ করা উচিত।


এটি আমাকে বাঁচিয়েছে। খেলুন 2.10.3 এবং এটি এটি করার সঠিক উপায় ছিল।
জ্যাক স্লিংগারল্যান্ড

4
ধন্যবাদ!!! আমার মতো বিশদ নির্দেশাবলীর প্রয়োজন রয়েছে তাদের জন্য, আপনি মূলত build.sbt এ যান এবং সেই লাইনটি যুক্ত করুনlibraryDependencies ++= Seq(jdbc,anorm,cache,"mysql" % "mysql-connector-java" % "5.1.27")
দাও লাম

4
আমার মতো লোকের জন্য। / অ্যাক্টিভেটরটি থামাতে ভুলবেন না এবং এটি আবার চালনা করুন :)
দামির ওলেজার

8

কোনও মাইএসকিএল ডাটাবেস অ্যাক্সেস করার বেশিরভাগ পদ্ধতি যা আমি জুড়ে এসেছি তা মডেলের মধ্যে কীভাবে সংযোগ স্থাপন করবেন এবং ডেটা পুনরুদ্ধার করবেন তা ব্যাখ্যা করে না। আমার অ্যাপ্লিকেশনটিতে, আমি উভয় মঙ্গোডিবি এবং একটি বহিরাগত মাইএসকিএল ডাটাবেস ব্যবহার করছি। সুতরাং আমি এখানে কীভাবে জিনিসগুলি করেছি (এর মাইএসকিএল দিক):

  1. Play 2.3.3 এর জন্য, build.sbt ফাইলে লাইব্রেরিতে MySQL নির্দিষ্ট লাইন যুক্ত করুন নির্ভরতা:

    libraryDependencies ++= Seq(
        "mysql" % "mysql-connector-java" % "5.1.27"
    )
    
  2. /Conf/application.conf ফাইলে এটি যুক্ত করুন:

    db.myotherdb.driver = com.mysql.jdbc.Driver
    db.myotherdb.url = "jdbc:mysql://xxx.xxx.xxx.xxx/NameOfOtherDB?characterEncoding=UTF-8"
    db.myotherdb.user = MyOtherDbUSername
    db.myotherdb.password = MyOtherDbPass
    

    আপনি যদি ডিফল্ট ডাটাবেস ব্যবহার করতে চান বা অন্য কোনও নাম ব্যবহার করতে চান তবে আপনি "মাইদারডবি" "ডিফল্ট" দ্বারা প্রতিস্থাপন করতে পারেন। স্থানীয় ডাটাবেসের জন্য আপনার ডাটাবেসটি (বাহ্যিক ডাটাবেসের ক্ষেত্রে) বা লোকালহোস্ট (বা 127.0.0.1) অবস্থিত সার্ভারের আইপি ঠিকানার সাথে "xxx.xxx.xxx.xxx" প্রতিস্থাপন করুন। আপনি যে ডাটাবেসটি ব্যবহার করতে চান তার নামের সাথে "নেমআউটঅথারডিবি", আপনার ডাটাবেস ব্যবহারকারীর নাম দিয়ে "মাইওথারডিবিউসার্নাম" এবং আপনার ডাটাবেস পাসওয়ার্ডের সাথে "মাইওথেরডিবিপাস" প্রতিস্থাপন করুন।

  3. আপনার মডেলের ভিতরে (/app/models/MyModel.scala) এটি যুক্ত করুন:

    val connection = DB.getConnection("myotherdb")
    
  4. বিবৃতি তৈরি করুন, ক্যোয়ারী এবং এটি সম্পাদন করুন:

    val statement = connection.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY)
    val query = "SELECT * FROM myTableName"
    val resultset = statement.executeQuery(query)
    
  5. তারপরে আপনি পুনরুদ্ধার করা ডেটা দিয়ে যা কিছু করতে চান তা চালিয়ে যেতে পারেন। উদাহরণ স্বরূপ:

    while (resultset.next()) {
        resultset.getString("columnName")
    }
    

    "কলামনাম" হ'ল ডিবি টেবিল কলাম / ক্ষেত্রের নাম যা আপনি পুনরুদ্ধার করতে চান।

সর্বশেষে তবে কমপক্ষে, আমি লক্ষ করতে চাই যে আপনি সংযোগটি বন্ধ করতে চাইতে পারেন বন্ধ ()


4
আপনার উদাহরণটি খুব দরকারী। এটি জাভা প্লেয়ের মতো দেখতে কেমন হবে?
lomse

6

আমি এটি না পাওয়া পর্যন্ত আমার মাইএসকিউএল কনফিগারেশনটিতে আটকে গেছি।

@ বেসরকারী উত্তর থেকে নেওয়া সবচেয়ে গুরুত্বপূর্ণ জিনিস:

  • প্রকল্পের নির্ভরতা (যা ভিতরে রয়েছে /project/Build.scala) মাইএসকিউএল সংযোগকারী / জে যুক্ত করুন
  • নির্ভরতা যুক্ত করার পরে, চালান play dependencies নতুন যুক্ত হওয়া মাইএসকিউএল সংযোগকারী / জে নির্ভরতা সমাধানের জন্য
  • কমেন্টস ডিফল্ট ইবিন কনফিগারেশন লাইন ebean.default="models.*"
  • সঠিক অক্ষর এনকোডিং সহ সঠিকভাবে মাইএসকিউএল ডাটাবেস কনফিগার করুন db.default.driver=com.mysql.jdbc.Driver db.default.url="jdbc:mysql://www.sample.com:3306/test?characterEncoding=UTF-8" db.default.user=playuser db.default.pass=playuser

এটা আমার দিন বাঁচায়।


4

২.৩.১ খেলার জন্য , এই পদক্ষেপগুলি অনুসরণ করুন।

1) প্রকল্পের নির্ভরতার মধ্যে মাইএসকিউএল সংযোগকারী / জে যুক্ত করুন (যা / প্রোজেক্ট / বিল্ড.এসবিটি ভিতরে রয়েছে)

libraryDependencies ++= Seq( javaJdbc, javaEbean, "mysql" % "mysql-connector-java" % "5.1.29"

2) আনকোমেন্ট ডিফল্ট ইবিন কনফিগারেশন লাইন ebean.default = "মডেল।"

3) সঠিক অক্ষর এনকোডিং সহ সঠিকভাবে মাইএসকিউএল ডাটাবেস কনফিগার করুন

db.default.driver=com.mysql.jdbc.Driver    //this is com. and not org.
db.default.url="jdbc:mysql://127.0.0.1/test?characterEncoding=UTF-8"
db.default.user=playuser
db.default.pass=playuser

4) সর্বাধিক ছদ্মবেশ। কনসোলে একটি পুনরায় লোড কমান্ড চালান ।


এটি স্থানীয়ভাবে আমার জন্য পুরোপুরি সূক্ষ্মভাবে কাজ করে। তবে আমি যখন কোনও ডিস্ট প্যাকেজ তৈরি করি, তখন প্যাকেজটি কোনও উবুন্টু সার্ভারে আপলোড করুন এবং আমার পাওয়া অ্যাপ্লিকেশনটি শুরু করার চেষ্টা করুন java.sql.SQLException: No suitable driver found for mysql://...
নিক

আপনার মাইএসকিএল ড্রাইভারটিকে ক্লাসপথে রাখার চেষ্টা করুন।
কাজ করছে

আমি এটিকে আমার বিল্ড.এসবিটি-র লাইব্রেরি নির্ভরতাতে যুক্ত করেছি (যা এটি স্থানীয়ভাবে কাজ করেছে) এবং সার্ভারে আমি এটি sudo apt-get install mysql-client; sudo apt-get install libmysql-javaপুট দিয়ে ইনস্টল করেছি export CLASSPATH=/usr/share/java/mysql-connector-java.jarএবং এটিতে যুক্তও করেছি/etc/environment ( help.ubuntu.com/commune/JDBCAndMySQL তে বর্ণিত )। এটি এখনও কাজ করে না।
নিক

4

2.4.3 এবং এমওয়াইএসকিউএল 5.7.9 খেলুন

পূর্ববর্তী সমস্ত উত্তর থেকে তথ্য বিটের একসাথে পাইক করে আমি এই কাজটি করতে সক্ষম হয়েছি। সুতরাং এখানে অন্য একটি, এটি আশা করা যায় যে আরও আধুনিক হোক বা একই পরিবেশের সাথে তাদের দরকারী।

পরিবেশের বিবরণ: ( এটি আমি ব্যবহার করছি )

  • 2.4.3 খেলুন এটি অ্যাক্টিভেটর -১.৩..7-ন্যূনতম সহ আসে with
  • জেডিকে 8, আপনার ইতিমধ্যে এটি থাকা উচিত কারণ আমি মনে করি না যে এই সংস্করণটি জেডিকে 7 এর সাথে কাজ করে
  • MYSQL 5.7.9

appication.conf

db.default.driver=com.mysql.jdbc.Driver
db.default.url="jdbc:mysql://localhost:3306/testSchema?characterEncoding=UTF-8"
db.default.user=yourDBUserName
db.default.password=yourDBUserPass

বিঃদ্রঃ:

  • ইউআরএলে টেস্টস্কেমা আপনার ডাটাবেসের নাম, আপনি যদি এমওয়াইএসকিউএল ওয়ার্কবেঞ্চের মতো কিছু ব্যবহার করেন তবে আপনি এটি স্কেমাস বিভাগের অধীনে তালিকাভুক্ত দেখতে পাবেন। আমি আমার টেস্টকে বলেছি। অন্যরা এটিকে "মাই ডেটাবেস" এর মতো কিছু বলতে পারেন
  • বন্দরটি MYSQL পোর্ট হওয়া উচিত। আপনার অ্যাপ্লিকেশন পোর্ট নয়। আমি 3306উদাহরণটি রেখেছি কারণ এটি সাধারণত এমওয়াইএসকিউএল-এর জন্য ডিফল্ট।

build.sbt

আপনার বিল্ড.এসবিটি ফাইলে নীচে এই লাইনটি যুক্ত করুন। এটি libraryDependencies ++= Seq()ঘোষণার পরে যাওয়া উচিত ।

libraryDependencies += "mysql" % "mysql-connector-java" % "5.1.36"

অবশেষে

  • আপনার প্রকল্পের মূল -> থেকে এই আদেশটি চালান run activator reload
  • আপনার আবেদন পুনরায় আরম্ভ করুন

1

জাভা প্রকল্পের জন্য এসবিটি ব্যবহার করে

"বিল্ড.এসবিটি" তে লাইব্রেরিটি নির্ভরতাটিকে এইভাবে দেখার জন্য পরিবর্তন করুন

libraryDependencies ++= Seq(
  javaJdbc,
  javaEbean,
  cache,
  javaWs,
  "mysql" % "mysql-connector-java" % "5.1.27"
)

"অ্যাক্টিভেটর রান" ব্যবহার করে আপনার প্রকল্পটি চালান

প্লে প্রয়োজনীয় জেডিবিসি সংযোগকারী ডাউন করবে।


1

অ্যাক্টিভেটর 1.3.6 সহ সর্বশেষ প্লে ফ্রেমওয়ার্ক 2.4.x এ আমার একই সমস্যা ছিল।

পদক্ষেপ এখানে। আমি এখানে বর্ণিত পদক্ষেপগুলি অনুসরণ করেছি https://www.playframework.com/docamentation/2.4.x/ জাভাডাটাবেস

এখানে আমার application.conf

# MySQL DB Configuration
db.default.driver=com.mysql.jdbc.Driver
db.default.url="jdbc:mysql://{hostname or ipaddres}/{db name}?characterEncoding=UTF-8"
db.default.username=username  // Note that user id deprecated, instead use username. Though that is not a major issue
db.default.password="password"

# JPA Configurations
jpa.default=defaultPersistenceUnit
PlayKeys.externalizeResources = false

# JavaEbean configuration
ebean.default = ["models.*"]

এখানে build.sbt

libraryDependencies ++= Seq(
  javaJdbc,
  cache,
  javaWs,
  javaJpa,
  evolutions,
  "mysql" % "mysql-connector-java" % "5.1.27"
)

plugins.sbt

// The Play plugin
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.4.3")

// Web plugins
addSbtPlugin("com.typesafe.sbt" % "sbt-coffeescript" % "1.0.0")
addSbtPlugin("com.typesafe.sbt" % "sbt-less" % "1.0.6")
addSbtPlugin("com.typesafe.sbt" % "sbt-jshint" % "1.0.3")
addSbtPlugin("com.typesafe.sbt" % "sbt-rjs" % "1.0.7")
addSbtPlugin("com.typesafe.sbt" % "sbt-digest" % "1.1.0")
addSbtPlugin("com.typesafe.sbt" % "sbt-mocha" % "1.1.0")

// Play enhancer - this automatically generates getters/setters for public fields
// and rewrites accessors of these fields to use the getters/setters. Remove this
// plugin if you prefer not to have this feature, or disable on a per project
// basis using disablePlugins(PlayEnhancer) in your build.sbt
addSbtPlugin("com.typesafe.sbt" % "sbt-play-enhancer" % "1.1.0")

// Play Ebean support, to enable, uncomment this line, and enable in your build.sbt using
// enablePlugins(SbtEbean). Note, uncommenting this line will automatically bring in
// Play enhancer, regardless of whether the line above is commented out or not.
addSbtPlugin("com.typesafe.sbt" % "sbt-play-ebean" % "1.0.0")

এখানে গুরুত্বপূর্ণ পদক্ষেপ।

উপরের পদক্ষেপগুলি কনফিগার করার পরে, কমান্ড লাইনে যান, আপনার অ্যাক্টিভেটর বন্ধ করুন এবং কমান্ডটি চালান activator run। আমার পরিস্থিতিতে, আমি ত্রুটিটি পেতে থাকছিলাম unable to find mysql drivers। চালানোর পরে activator run, অ্যাক্টিভেটর আসলে মাইএসকিউএল ড্রাইভারগুলি ডাউনলোড করবে এবং নির্ভরতাগুলি সমাধান করবে। এটিই গুরুত্বপূর্ণ পদক্ষেপ যা আমার সমস্যা সমাধান করেছে।


1

আমার জন্য এই কাজটি, আপনার নির্ভরতার মধ্যে নীচের লাইনটি যুক্ত করুন:

"mysql" % "mysql-connector-java" % "5.1.36"

কোডটি এখানে:

import java.sql.Connection

val driver = "com.mysql.jdbc.Driver"
val url = "jdbc:mysql://localhost/world"
val username = "root"
val password = "root"
var connection: Connection = null

try {
    // make the connection
    Class.forName(driver)
    connection = DriverManager.getConnection(url, username, password)

    // create the statement, and run the select query
    val statement = connection.createStatement()
    val resultSet = statement.executeQuery("SELECT id , name FROM bar")

    val sql: SqlQuery = SQL("select * from products order by name asc")

    while (resultSet.next()) {
        val id = resultSet.getString("id")
        val name = resultSet.getString("name")
        println(id, name)
    }
} catch {
case e: Exception => println("exception caught: " + e);
}
connection.close()
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.