Cara Koneksi Lumen dengan Database Oracle
Beberapa hari terakhir, lebih tepatnya 4 hari mencoba adaptasi dengan lumen. Microservices dari laravel. Biasanya database yang saya gunakan dalam laravel maupun lumen adalah MySQL Database. Tapi permintaan client mengharuskan saya menggunakan oracle database. Ilmu yang benar — benar baru sehingga saya butuh belajar, bertanya, dan mencari.
Singkat kata saya anggap Anda sudah dapat menginstall lumen di komputer Anda dan sudah menyiapkan database oracle. Serta beberapa requirement dibawah ini sudah anda penuhi. Anda hanya bermasalah pada cara mengkoneksikan antara lumen dengan database oracle.
Requirement Dasar :
- Menginstall Composer
- Menginstall Lumen
- Menginstall Xampp
- Operating System Windows
- Menginstall Oracle SQL Database
Setelah requirement dasar tersebut terpenuhi, selanjutnya mari kita konfigurasi.
A. Setting php.ini
- Lakukan setting pada php.ini dengan klik xampp → apache → config → php.ini
- Setelah Anda buka file php.ini, cari dan uncomment extension=oci8_12c dan extension=pdo_oci dengan menghapus tanda semicolon “;” seperti berikut
- Selanjutnya restart Apache dan MySQL dengan cara klik stop kemudian start. kemudian coba running aplikasi Anda. Jika terdapat error oci8_12c.dll not found maka anda wajib download file Oci terlebih dahulu disini.
Pilih versi terbaru dan pastikan juga match dengan versi PHP Anda. Jika sudah. Extract file oci yang sudah anda download di Xampp/php/ext. jika berhasil maka akan ada beberapa file baru terekstrak seperti berikut :
Jika sudah coba start kembali, harusnya tidak ada error lagi, karena file php_oci8.dll sudah ready. Jika masih erorr. biasanya dikarenakan versi oci yang anda dowload tidak sesuai dengan versi php Anda. Jadi sebelum mendownload oci pastikan dulu versi php anda.
B. Setting Lumen
Setelah Anda setting php.ini, tentu lumen tidak langsung bisa terkoneksi dengan database oracle Anda. Butuh penambahan beberapa pengaturan sebagai berikut :
- Lakukan penambahan package yajra pada lumen untuk koneksi dengan database oracle dengan mengetikkan perintah berikut pada terminal
composer require yajra/laravel-oci8:"^6.0"
- Setelah dilakukan installasi, selanjutnya tambahkan provider yajra pada lumen dengan edit pada file di App/Providers/AppServiceProvider.php tambahkan baris perintah seperti berikut :
class AppServiceProvider extends ServiceProvider
{
/**
* Register any application services.
*
* @return void
*/
public function register()
{
//core services
$this->app->register(\Yajr\Oci8\Oci8ServiceProvider::class);
- Jika sudah, selanjutnya tambahkan baris perintah berikut pada file vendor\laravel\lumen-framework\config\database.php
'oracle' => [
'driver' => 'oracle',
'tns' => env('DB_TNS', ''),
'host' => env('DB_HOST', ''),
'port' => env('DB_PORT', '1521'),
'database' => env('DB_DATABASE', ''),
'service_name' => env('DB_SERVICE_NAME', ''),
'username' => env('DB_USERNAME', ''),
'password' => env('DB_PASSWORD', ''),
'charset' => env('DB_CHARSET', 'AL32UTF8'),
'prefix' => env('DB_PREFIX', ''),
'prefix_schema' => env('DB_SCHEMA_PREFIX', ''),
],
- Perintah diatas digunakan untuk inisialisasi database oracle pada lumen, Anda dapat meletakkannya dibawah sqlsrv, jangan lupa juga untuk mengisi hostname, username, password, dan database seperti berikut :
- Terakhir, lakukan perubahan pada file .env sesuai dengan isi dari hostame, port, database, dan username Anda. Jangan lupa mengganti DB_CONNECTION = ORACLE
- Jika sudah kemudian running aplikasi lumen anda dan cek apakah lumen Anda sudah terhubung atau belum.
Dalam post ini, saya juga menambahkan error — error yang sudah saya solve selama percobaan koneksi lumen dengan laravel. Saya rangkum semua dalam artikel ini. Jika Anda memiliki masalah dan error Anda dapat berkomentar dibawah dan akan saya masukkan dalam artikel ini. Mari kita sharing.
— — — — — — — — — — — — — —
TROUBLESHOOT AND ERROR
Berikut adalah beberapa error yang terjadi saat melakukan percobaan koneksi lumen dengan database oracle.
# Php_Oci8.dll not found
Penyelesaian :
- Cek terlebih dahulu versi PHP Anda.
- Download php_oci8 disini. Jika versi PHP anda adalah 7.3, maka download OCI Tread Safe khusus untuk PHP versi 7.3 sesuai dengan arsitektur Anda juga 32 bit atau 64 bit. Jika anda salah mendownload maka pesan kesalahan tersebut akan tetap ada.
- Setelah di download, extract file download anda di xampp/php/ext
- Stop service pada xampp anda, kemudian start lagi. Harusnya masalah tersebut terselesaikan.
#ORA-12170: TNS:Connect timeout occurred
Penyelesaian :
- Edit file vendor\laravel\lumen-framework\config\database.php
- Cari baris ‘tns’ => env(‘DB_TNS’, ‘yourtns’). Kemudian hapus baris tersebut.
- Harusnya setelah dihapus, maka kesalahan tersebut terselesaikan
# Warning: Uncaught PDOException: PDO::__construct(): MySQL server has gone away
Penyelesaian :
- Kesalahan tersebut terjadi akibat kesalahan konfigurasi database, saat itu terjadi kesalahan yang saya lakukan adalah belum mengganti DB_CONNECTION ke oracle.
- Tinggal ganti saja DB_CONNECTION ke oracle dan masalah terselesaikan.
#Unsupported driver [oracle]
Penyelesaian :
- Kesalahan ini terjadi akibat provider yajra class belum didaftarkan dalam AppServiceProvider.php
- Caranya gampang, edit file App/Providers/AppServiceProvider.php kemudian tambahkan baris perintah ini di dalam public function register(). seperti berikut :
- Setelah ditambahkan, maka harusnya masalah tersebut terselesaikan.
#httpd.exe — Entry Point Not Found Xampp [oracle]
Pesan Kesalahan Didapat :
Saya mendapatkan error ini ketika ingin menghubungkan Xampp dengan database oracle. Saya sudah install intanclient sesuai versi laptop. install xammp sesuai versi laptop yaitu 64bit, tetapi setelah saya tambahkan pengaturan di uncomment extension=oci8_12c di php.ini saya mendapat error tersebut.
Padahal file php_oci8_12c.dll ada dan letaknya sesuai. kemudian saya menemukan link penyelesaian yang ternyata cukup sederhana.
Penyelesaian :
- Pastikan anda sudah mengintall instanclient sesuai versi laptop anda.
- copy file oci.dll, oraociei12.dll, dan oraons.dll ke dalam folder apache/bin. Apabila file sudah ada maka replace saja
- Harusnya masalah Anda sudah terselesaikan. Jika belum, coba pastikan kembali Anda sudah mencoba langkah- langkah penyelesaian lain diatas.