antoniovalentin's avatar

Syntax error or access violation: 1305 FUNCTION

Hi I have a problem regarding a product page in my laravel ecommerce. In the backend I want to access the product page and I get this error. Can anyone help me?

Illuminate \ Database \ QueryException (42000) SQLSTATE[42000]: Syntax error or access violation: 1305 FUNCTION smart12_laravel.JSON_EXTRACT does not exist (SQL: select products.id as proid, products.category_id as category_id, JSON_EXTRACT(products.name, '$.en') as productname, products.featured as featured, products.status as status, products.created_at as createdat, products.updated_at as updateat, stores.name as storename, brands.name as brandname, JSON_EXTRACT(categories.title, '$.en') as catname, JSON_EXTRACT(subcategories.title, '$.en') as subcatname, JSON_EXTRACT(grandcategories.title, '$.en') as childname, variant_images.main_image as mainimage, products.price as price, products.vender_price as vender_price, products.tax_r as tax_r, products.vender_offer_price as vender_offer_price, products.offer_price as offer_price, add_sub_variants.main_attr_id as main_attr_id, add_sub_variants.main_attr_value as main_attr_value from products inner join stores on stores.id = products.store_id inner join brands on brands.id = products.brand_id inner join categories on categories.id = products.category_id inner join subcategories on subcategories.id = products.child left join add_sub_variants on products.id = add_sub_variants.pro_id and add_sub_variants.def = 1 left join variant_images on variant_images.var_id = add_sub_variants.id left join grandcategories on grandcategories.id = products.grand_id where products.deleted_at is null) Previous exceptions SQLSTATE[42000]: Syntax error or access violation: 1305 FUNCTION smart12_laravel.JSON_EXTRACT does not exist (42000)

0 likes
9 replies
Sinnbeck's avatar

My guess is that you are running an old mysql version. 5.6?

ExpDev07's avatar

JSON_EXTRACT was introduced in MySQL version 5.7 I believe, so you have to upgrade!

Sinnbeck's avatar

You cannot use json in mysql 5.6. Upgrade to 5.7 or dont use json in the database

antoniovalentin's avatar

}

}

public function index(Request $request)
{
    $lang = Session::get('changed_language');

    $products = DB::table('products')->join('stores', 'stores.id', '=', 'products.store_id')
        ->join('brands', 'brands.id', '=', 'products.brand_id')
        ->join('categories', 'categories.id', '=', 'products.category_id')
        ->join('subcategories', 'subcategories.id', '=', 'products.child')
        ->leftJoin('add_sub_variants', function ($join) {
            $join->on('products.id', '=', 'add_sub_variants.pro_id')->where('add_sub_variants.def', '=', '1');
        })
        ->leftJoin('variant_images', 'variant_images.var_id', '=', 'add_sub_variants.id')
        ->leftJoin('grandcategories', 'grandcategories.id', '=', 'products.grand_id')
        ->select('products.id as proid', 'products.category_id as category_id', FacadesDB::raw("json_decode(products.name, '$.$lang') as productname"), 'products.featured as featured', 'products.status as status', 'products.created_at as createdat', 'products.updated_at as updateat', 'stores.name as storename', 'brands.name as brandname', FacadesDB::raw("json_decode(categories.title, '$.$lang') as catname"), FacadesDB::raw("json_decode(subcategories.title, '$.$lang') as subcatname"), FacadesDB::raw("json_decode(grandcategories.title, '$.$lang') as childname"), "variant_images.main_image as mainimage", 'products.price as price', 'products.vender_price as vender_price', 'products.tax_r as tax_r', 'products.vender_offer_price as vender_offer_price', 'products.offer_price as offer_price', 'add_sub_variants.main_attr_id as main_attr_id', 'add_sub_variants.main_attr_value as main_attr_value')
        ->where('products.deleted_at', '=', null)
        ->get();

    if ($request->ajax()) {
        return DataTables::of($products)
            ->editColumn('checkbox', function ($row) {

                $chk = "<div class='inline'>
                      <input type='checkbox' form='bulk_delete_form' class='filled-in material-checkbox-input' name='checked[]'' value='$row->proid' id='checkbox$row->proid'>
                      <label for='checkbox$row->proid' class='material-checkbox'></label>
                    </div>";

                return $chk;
            })
            ->addIndexColumn()
            ->addColumn('image', function ($row) {

                $image = '';

Please or to participate in this conversation.