๋งˆ MaterialToolbar ์•ผ ๋‹ˆ ๋จธ์„  ๊ณ ๋ฏผ ์žˆ๋‚˜ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค ๋‹ค ์“ฐ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์ผ๋Š”๋ฐ ์™œ ์—๋ฎฌ๋ ˆ์ดํ„ฐ๊ฐ€ ์•ˆ ๋Œ์•„๊ฐ€๋Š”๋ฐ

 

 

MainActivity.kt

class MainActivity : AppCompatActivity() {

    private lateinit var binding: ActivityMainBinding
    private lateinit var toolbar: MaterialToolbar

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)

        toolbar = findViewById(R.id.toolbar)
        setToolbarListener()
    }
    
    ...
}

 

toolbar = findViewById(R.id.toolbar) ์ด ๋ผ์ธ๋งŒ ์“ฐ๋ฉด ์—๋ฎฌ๋ ˆ์ดํ„ฐ๊ฐ€ ๋จนํ†ต์ด ๋ผ์„œ ๋ฐ”์ธ๋”ฉํ•˜๋Š” ๊ณผ์ •์—์„œ ๋ถ„๋ช…ํžˆ ์—ฌ๊ธฐ์„œ ๋ฌธ์ œ๊ฐ€ ์žˆ์„ ๊ฑฐ๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ณ  ์ดํ‹€์„ ์—ฌ๊ธฐ๋งŒ ๋œฏ์–ด๋ณด๊ณ  ์žˆ์—ˆ๋Š”๋ฐ ๋ฌธ์ œ๋Š” ๋‹ค๋ฅธ ๊ณณ์— ์žˆ์—ˆ๋‹ค

 

์‹ค์ œ ์›์ธ์€ ํˆด๋ฐ”์™€ ํˆด๋ฐ”๋ฅผ includeํ•œ ๋ ˆ์ด์•„์›ƒ์—์„œ ๋˜‘๊ฐ™์€ id๋ฅผ ์ค‘๋ณต์œผ๋กœ ์‚ฌ์šฉํ–ˆ๋˜ ๊ฒƒ์ด์—ˆ๋‹ค

toolbar ๋ผ๋Š” ์•„์ด๋””๋ฅผ ๊ฐ€์ง„ ๊ฐœ์ฒด๊ฐ€ ๋‘ ๊ฐœ๊ฐ€ ์žˆ์œผ๋‹ˆ ์–ด๋–ค ๊ฑธ ์ฐพ์•„์„œ ๋ฐ”์ธ๋”ฉํ•ด์•ผ ํ• ์ง€ ๋ชฐ๋ผ์„œ cannot be cast ์˜€๋˜ ๊ฒƒ ๊ฐ™๋‹ค

 

toolbar.xml

<?xml version="1.0" encoding="utf-8"?>
<com.google.android.material.appbar.AppBarLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <com.google.android.material.appbar.MaterialToolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        app:menu="@menu/menu_toolbar"
        app:title="@string/app_name"
        style="@style/Widget.MaterialComponents.Toolbar.Primary"/>

</com.google.android.material.appbar.AppBarLayout>

 

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <include
        android:id="@+id/toolbar"
        layout="@layout/toolbar"/>

    ...

</androidx.constraintlayout.widget.ConstraintLayout>

 

๋ณ€๊ฒฝ ํ›„

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <include
        android:id="@+id/included_toolbar"
        layout="@layout/toolbar"/>

    ...

</androidx.constraintlayout.widget.ConstraintLayout>

 

์ค‘๋ณต๋˜์ง€ ์•Š๊ฒŒ ์•„์ด๋””๋ฅผ ๋ณ€๊ฒฝํ•ด์ฃผ๊ณ  ์‹คํ–‰์‹œํ‚ค๋‹ˆ ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•œ๋‹ค

๋‚˜๋„ ๋ฉ‹์žˆ๊ฒŒ ์ปค๋งจ๋“œ๋ผ์ธ ์จ์„œ ์ž‘์—…ํ•˜๊ณ  ์‹ถ๋‹ค. ๊ทผ๋ฐ ๋‚œ ์›Œํฌ๋ฒค์น˜ ์“ด๋‹ค. ์ผ๋‹จ ํ•ด๋ณด์ž๊ณ ๐Ÿ˜‚๐Ÿ˜‚

 

Workbench์—์„œ User ์ƒ์„ฑํ•˜๊ณ  ๊ถŒํ•œ ๋ถ€์—ฌํ•˜๊ธฐ


 

1. Workbench ๋ฉ”์ธํ™”๋ฉด์—์„œ root ๊ถŒํ•œ์œผ๋กœ ์ ‘์†ํ•œ๋‹ค.

 

 

2. ์Šคํ‚ค๋งˆ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ๋นจ๊ฐ„ ํ…Œ๋‘๋ฆฌ๋กœ ํ‘œ์‹œํ•œ ์›ํ†ต ๋ชจ์–‘ ์•„์ด์ฝ˜์„ ๋ˆ„๋ฅด๊ฑฐ๋‚˜ Schemas ํƒญ์—์„œ ์˜ค๋ฅธ์ชฝ ํด๋ฆญํ•ด์„œ ์ƒˆ๋กœ์šด ์Šคํ‚ค๋งˆ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

์Šคํ‚ค๋งˆ ์ด๋ฆ„์„ ์ž…๋ ฅํ•œ๋‹ค. Charset์€ utf-8์œผ๋กœ ์„ค์ •ํ•ด์ฃผ๋ผ๊ณ  ํ•˜๋Š”๋ฐ, default๋กœ ์ƒ์„ฑํ•ด๋„ ๋˜‘๊ฐ™์€ ๊ฒƒ ๊ฐ™๋‹ค.

 

 

3. ์‚ฌ์šฉ์ž ๊ณ„์ •์„ ์ƒ์„ฑํ•œ๋‹ค. Administration ํƒญ์˜ Users and Privileges ๋˜๋Š” ์ƒ๋‹จ์˜ Server - Users and Privileges๋ฅผ ํ†ตํ•ด ๊ณ„์ •์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

Add Account๋ฅผ ํด๋ฆญํ•ด ์ƒˆ๋กœ์šด ๊ณ„์ •์„ ์ƒ์„ฑํ•˜๊ณ , ๋กœ๊ทธ์ธ๋ช…๊ณผ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•œ๋‹ค.

 

 

4. ์‚ฌ์šฉ์ž ๊ณ„์ •์— ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๊ธฐ ์œ„ํ•ด Schema Privileges ํƒญ์œผ๋กœ ์ด๋™ํ•œ๋‹ค. Add Entry... ๋ฅผ ํด๋ฆญํ•ด ๊ถŒํ•œ์„ ์„ค์ •ํ•˜์—ฌ ์‚ฌ์šฉํ•  ์Šคํ‚ค๋งˆ๋ฅผ ์„ ํƒํ•œ๋‹ค. 

 

 

 

์Šคํ‚ค๋งˆ๋ฅผ ์„ ํƒํ•˜๊ณ  ๋‚˜๋ฉด ์›ํ•˜๋Š” ๊ถŒํ•œ์„ ์„ค์ •ํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค. Select ALL ๋ฒ„ํŠผ์„ ํ†ตํ•ด ํ•œ ๋ฒˆ์— ๋ชจ๋“  ๊ถŒํ•œ์„ ์„ค์ •ํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค.

 

 

5. ์Šคํ‚ค๋งˆ ์ƒ์„ฑ ๋ฐ ์‚ฌ์šฉ์ž ๊ณ„์ • ์ƒ์„ฑ์„ ๋งˆ์น˜๋ฉด ๋‹ค์‹œ ๋ฉ”์ธํ™”๋ฉด์œผ๋กœ ๋Œ์•„์™€ MySQL Connections ์˜†์˜ + ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ์„œ ์ƒˆ๋กœ์šด Connection์„ ์ƒ์„ฑํ•ด์ค€๋‹ค.

 

 

์ƒ์„ฑํ•œ ๊ณ„์ •์˜ ์ด๋ฆ„๊ณผ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜๊ณ  Test Connection ๋ฒ„ํŠผ์„ ํด๋ฆญํ•œ๋‹ค. ์ œ๋Œ€๋กœ ์ ‘์†์ด ๋œ๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ์•Œ๋ฆผ์ฐฝ์ด ๋œจ๊ณ , ๋ฉ”์ธํ™”๋ฉด์— ์ƒˆ๋กœ์šด Connection์ด ์ƒ๊ธด๋‹ค.

 

 

 

 

๋‹ค์Œ์—๋Š” ๋ช…๋ น์–ด ์ด์šฉํ•˜๊ธฐ ๋„์ „!

OS ํ™˜๊ฒฝ Windows 10

 

ํ”„๋กœ์ ํŠธ๋ฅผ ์œ„ํ•ด ํ™˜๊ฒฝ์„ ์…‹ํŒ…ํ•˜๋ฉด์„œ ์—ญ์‹œ ์„ค์ •์ด ๊ฐ€์žฅ ์ง„์ด ๋น ์ง€๋Š”๊ตฌ๋‚˜ ์ƒ๊ฐํ•˜๋Š” ์ค‘์ด๋‹ค.

MySQL ์—ญ์‹œ MySQL ๋‹ค์šด๋กœ๋“œ ๋ฐ ์„ค์น˜ ์ดํ›„์— ํ•ด์•ผ ํ•  ์ผ์ด ๊ฝค ์žˆ๋‹ค. ๋งค๋ฒˆ ๊นŒ๋จน๋Š” ๋‚˜๋ฅผ ์œ„ํ•ด ๊ธฐ๋กํ•ด๋‘”๋‹ค.

 

 

1. Path ์„ค์ •

์„ค์น˜ ์ดํ›„ Path ์„ค์ •์„ ํ•ด์ค˜์•ผ ํ•œ๋‹ค.

์„ค์น˜ ๋‹ค ํ–ˆ๋‹ค๊ณ  ๋ฌด์ž‘์ • cmd์—์„œ mysql -u root -p ์ณ๋ด๋„ Path ์ถ”๊ฐ€๋ฅผ ํ•ด์ฃผ์ง€ ์•Š์•˜์œผ๋ฉด ์ ‘์†์ด ๋˜์ง€ ์•Š๋Š”๋‹ค.


Path ์„ค์ • ๋ฐฉ๋ฒ•์€ ์ด ํฌ์ŠคํŠธ์—์„œ ์„ค๋ช…ํ•ด๋‘์—ˆ๋‹ค.

 

 

[MySQL] MySQL ํ™˜๊ฒฝ๋ณ€์ˆ˜ Path ์„ค์ •ํ•˜๊ธฐ

MySQL์„ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์•˜๋‹ค. ์ด์ œ ์ ‘์†ํ•ด์„œ ์–ผ๋ฅธ ํ…Œ์ด๋ธ”๋„ ๋งŒ๋“ค๊ณ  ํ”„๋กœ์ ํŠธ๋Ÿ‰ ์—ฐ๊ฒฐํ•ด์•ผ์ง€ ! ! ! ! ! ๋‘๋‘ฅ 'mysql'์€(๋Š”) ๋‚ด๋ถ€ ๋˜๋Š” ์™ธ๋ถ€ ๋ช…๋ น, ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ, ๋˜๋Š” ๋ฐฐ์น˜ ํŒŒ์ผ์ด ์•„๋‹™๋‹ˆ๋‹ค. MySQ

infdw.tistory.com

 

 

2. SQL_MODE ์„ค์ •

Windows OS์˜ ๊ฒฝ์šฐ SQL_MODE ๊ธฐ๋ณธ ์˜ต์…˜์ด ์„ค์ •๋˜์–ด ์žˆ์ง€ ์•Š์€ ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋Š” ๊ฒƒ ๊ฐ™๋‹ค.

ํ˜‘์—… ์‹œ ๋˜๋Š” ์„œ๋ฒ„์— ์˜ฌ๋ฆฐ DB์™€ ์„ค์ •์ด ๋‹ค๋ฅธ ๊ฒฝ์šฐ ์‚ฝ์งˆ์„ ํ”ผํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ๋ฏธ๋ฆฌ ์„ค์ •ํ•ด์ฃผ๊ณ  ์‹œ์ž‘ํ•˜๋Š” ํŽธ์ด ํŽธํ•˜๋‹ค.

 

SQL_MODE ์„ค์ • ๋ฐฉ๋ฒ•์€ ์ด ํฌ์ŠคํŠธ์—์„œ ์„ค๋ช…ํ•ด๋‘์—ˆ๋‹ค.

 

 

[MySQL] ONLY_FULL_GROUP_BY ์—๋Ÿฌ

๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด์„œ GROUP BY๋ฅผ ์‚ฌ์šฉํ•˜๋Š” Query์—์„œ ์•„๋ž˜์™€ ๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. "Expression #20 of SELECT list is not in GROUP BY clause and contains nonaggregated column '์ปฌ๋Ÿผ๋ช…' which is not..

infdw.tistory.com

 

MySQL์„ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์•˜๋‹ค. ์ด์ œ ์ ‘์†ํ•ด์„œ ์–ผ๋ฅธ ํ…Œ์ด๋ธ”๋„ ๋งŒ๋“ค๊ณ  ํ”„๋กœ์ ํŠธ๋Ÿ‰ ์—ฐ๊ฒฐํ•ด์•ผ์ง€ ! ! ! ! !

 

 

๋‘๋‘ฅ

 

 

'mysql'์€(๋Š”) ๋‚ด๋ถ€ ๋˜๋Š” ์™ธ๋ถ€ ๋ช…๋ น, ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ, ๋˜๋Š” ๋ฐฐ์น˜ ํŒŒ์ผ์ด ์•„๋‹™๋‹ˆ๋‹ค.

 

MySQL Server ์„ค์น˜ ํ›„ cmd ์ฐฝ์—์„œ MySQL์— ์ ‘๊ทผํ•˜๋ ค๊ณ  ํ•  ๋•Œ ์œ„์™€ ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค.

์ด๋Š” ํ™˜๊ฒฝ๋ณ€์ˆ˜์—์„œ Path๋ฅผ ์„ค์ •ํ•ด์ฃผ์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. MySQL์˜ ๊ฒฝ๋กœ๋ฅผ ํ™˜๊ฒฝ๋ณ€์ˆ˜์— ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

 

MySQL Server ๊ฒฝ๋กœ๋Š” MySQL Installer์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ณ„๋„๋กœ ์ง€์ •ํ•ด์ฃผ์ง€ ์•Š์•˜๋‹ค๋ฉด, ๊ธฐ๋ณธ ๊ฒฝ๋กœ๋Š” C:\Program Files\MySQL\MySQL Server 8.0\bin ์ด๋‹ค.

 

 

์„ค์ • - ๊ณ ๊ธ‰ ์‹œ์Šคํ…œ ์„ค์ • - ์‹œ์Šคํ…œ ์†์„ฑ - ๊ณ ๊ธ‰ - ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋กœ ๋“ค์–ด๊ฐ€์„œ Path๋ฅผ ์„ค์ •ํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค.

 

 

 

 

Path๋ฅผ ์„ค์ •ํ•ด์ฃผ๊ณ  ๋‹ค์‹œ cmd์ฐฝ์„ ์—ด์–ด์„œ MySQL์— ์ ‘์†ํ•ด๋ณด๋ฉด ์ ‘์†์ด ์„ฑ๊ณตํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

์•„์ง์€ ์—„์ฒญ๋‚˜๊ฒŒ ๋ง‰์—ฐํ•œ ๊ณ„ํš ์ค‘ ํ•˜๋‚˜์ด์ง€๋งŒ, ์–ด์จŒ๊ฑฐ๋‚˜ ๋‚˜๋Š” ๋Œ€ํ•™์›์— ๊ฐ€๊ณ  ์‹ถ๋‹ค.

์ง€๋‚œ ํ•œ ํ•ด ๋‚˜๋ฆ„๋Œ€๋กœ ๋ฐ”์˜๊ฒŒ ์ค€๋น„ํ•˜๋Š” ์‹œ๊ฐ„์„ ๋ณด๋ƒˆ๊ณ , ๊ฒฐ๊ณผ์ ์œผ๋กœ ๊ฐ์‚ฌํ•˜๊ฒŒ๋„ ๊ฐœ๋ฐœ์ž๋กœ์„œ ์ฒซ๊ฑธ์Œ์„ ๋—๋‹ค.

ํ•˜์ง€๋งŒ ์—ฌ์ „ํžˆ ๊ณณ๊ณณ์— ์•„์ง ์ฑ„์šฐ์ง€ ๋ชปํ•œ ํ‹ˆ์˜ ์กด์žฌ๊ฐ€ ๊ฝค๋‚˜ ํฌ๊ฒŒ ๋А๊ปด์ง„๋‹ค. ์‚ฌ์‹ค ๋‹น์—ฐํ•œ ์ผ์ด๋‹ค.

๋‚˜์˜ ๋ถ€์กฑํ•จ์„ ํ•œํƒ„ํ•˜๋Š” ์‹œ๊ฐ„์€ ์งง๊ฒŒ ๊ฐ€์ง€๊ฒ ๋‹ค. ๋Œ€์‹  ์ด์ œ๋ถ€ํ„ฐ๋ผ๋„ ๋‚ด๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ์ผ์„ ์ฐพ์•„์„œ ํ–‰๋™ํ•ด์•ผ ํ•œ๋‹ค.

 

์ง„์ •์œผ๋กœ '๋ชจ๋ฅธ๋‹ค'๋Š” ๊ฒƒ์€.. ๋‚ด๊ฐ€ ๋ญ˜ ๋ชจ๋ฅด๋Š”์ง€๋„ ๋ชจ๋ฅด๋Š” ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค.

๋‚˜๋‹ค.

๋ถ„๋ช…ํžˆ ๋‚ด๊ฐ€ ์•„์ฃผ ๋งŽ์ด ๊ณต๋ถ€ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์€ ์•Œ๊ฒ ๋Š”๋ฐ, ๋Œ€์ฒด ๋ญ˜? ๋ญ๋ถ€ํ„ฐ? ์–ด๋–ป๊ฒŒ? ์–ผ๋งˆ๋‚˜?

์•„์ง๋„ ์ด ๋‹จ๊ณ„์˜ ๋„ํŠธ๋จธ๋ฆฌ ์–ด๋“œ๋งค์—์„œ ํ—ˆ์šฐ์ ๋Œ€๊ณ  ์žˆ๋Š” ์ค‘์ด๋‹ค.

 

์ด๋Ÿฐ ๋‚ด๊ฒŒ ์š”์ฆ˜ ๊ฐ€์žฅ ๊ธ์ •์ ์ธ ์˜ํ–ฅ์„ ๋ผ์น˜๊ณ  ์žˆ๋Š” ๊ฒƒ์€ ์ตœ๊ทผ ์ข‹์€ ๊ธฐํšŒ๋กœ ์ฐธ์—ฌํ•˜๊ฒŒ ๋œ ์ž๋ฃŒ๊ตฌ์กฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์Šคํ„ฐ๋””์ด๋‹ค.

์ด ์Šคํ„ฐ๋”” ๋•๋ถ„์— ๋ฌด์ง€์˜ ๋ฐ”๋‹ค ํ•œ๊ฐ€์šด๋ฐ์—์„œ ํ—ˆ์šฐ์ ๋Œ€๋˜ ๋‚ด๊ฐ€ ๋„ํŠธ๋จธ๋ฆฌ ๊ฐ€๊นŒ์ด๊นŒ์ง€๋ผ๋„ ์˜ฌ ์ˆ˜ ์žˆ์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค.

๋‚˜๋ฅผ ์ œ์™ธํ•œ ์Šคํ„ฐ๋””์›๋“ค์€ ๊ต‰์žฅํžˆ ํ•™๊ตฌ์—ด์ด ๋œจ๊ฑฐ์šด ๋ฒ ํ…Œ๋ž‘์ด๋‹ค.

์Šคํ„ฐ๋””์›๋“ค์ด ๊ต‰์žฅํžˆ ์ปดํ“จํ„ฐ๊ณตํ•™์ ์ธ(?) ๋Œ€ํ™”๋ฅผ ๋‚˜๋ˆ„๊ณ  ์žˆ์œผ๋ฉด, ๋‚˜๋Š” ์˜ค์กฐ์˜ค์–ต๊ฐœ์˜ ์ฒ˜์Œ ๋“ฃ๋Š” ๋‹จ์–ด๋“ค์„ ์—ด์‹ฌํžˆ ์„œ์น˜ํ•œ๋‹ค.

์•ฝ 8์ฃผ ์ •๋„ ๋ญ๊ฐ€ ๋ญ”์ง€๋„ ๋ชจ๋ฅด๊ฒ ๋Š” ์กฐ๊ฐ์ง€์‹๋“ค์„ ์ฐจ๊ณก์ฐจ๊ณก ๋ชจ์œผ๋‹ค ๋ณด๋‹ˆ ์ด์ œ๋Š” ์–ด๋ ดํ’‹์ด ์œค๊ณฝ ์ •๋„๋Š” ์žกํžˆ๋Š” ๋А๋‚Œ์ด๋‹ค.

 

์Šคํ„ฐ๋””์— ์ฐธ์—ฌํ•˜๋ฉด์„œ ๊ฐ€์žฅ ํ†ต๊ฐํ•œ ๊ฒƒ์€ ๊ฐ™์€ ๊ณต๋ถ€๋ฅผ ํ•˜๋Š” ์‚ฌ๋žŒ, ๋‚˜๋ณด๋‹ค ๋‚˜์€ ์‚ฌ๋žŒ์ด ๋งŽ์€ ํ™˜๊ฒฝ์— ๋…ธ์ถœ๋˜๋Š” ๊ฒƒ์ด ๋‚ด๊ฒŒ ์•„์ฃผ ํฐ ๋„์›€์ด ๋œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

ํฌ๊ฒŒ๋Š” ํ•™์Šต์ ์ธ ๋ถ€๋ถ„๋ถ€ํ„ฐ, ์‚ฌ์†Œํ•˜๊ฒŒ๋Š” ์Šค๋ชฐํ† ํฌ์—์„œ ์–ป๊ฒŒ ๋˜๋Š” ์ง€์‹ ์™ธ์ ์ธ ๋ถ€๋ถ„๊นŒ์ง€ ๋ชจ๋“  ๊ฒƒ์ด ๋‚˜์˜ ์ž์‚ฐ์ด ๋œ๋‹ค.

๊ทธ๊ฒŒ ์˜จ๋ชธ์œผ๋กœ ๋А๊ปด์ง€๋‹ˆ๊นŒ ์—ด์‹ฌํžˆ ์–ผํƒ€๊ณ  ์ž๊ดด๊ฐ ๋А๋ผ๋ฉด์„œ๋„ ์—ด์‹ฌํžˆ ์ฐธ์—ฌํ•˜๊ฒŒ ๋œ๋‹ค.

 

๋Œ€์ถฉ ๊ทธ๋ž˜์„œ ์ง€๊ธˆ์€ ๋‚ด๊ฐ€ ๋ญ˜ ๊ณต๋ถ€ํ•ด์•ผ ํ•˜๋Š”์ง€๋Š” ์•„๋Š” ๋‹จ๊ณ„๊นŒ์ง€๋Š” ์˜จ ๊ฒƒ ๊ฐ™๋‹ค.

๊ทผ๋ฐ ์—ฌ๊ธฐ์„œ๋ถ€ํ„ฐ ๋ถ€๋„๋Ÿฌ์›€..

๋‚˜๋Š” ์ตœ๊ทผ๊นŒ์ง€๋„ CS ๊ณต๋ถ€๊ฐ€ ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ ์ˆ˜์ค€์˜ ๊ณต๋ถ€๋ฅผ ํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ณ  ์žˆ์—ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์นœ๊ตฌ๊ฐ€ CS ์Šคํ„ฐ๋””๋ฅผ ํ•œ๋‹ค๊ณ  ํ•  ๋•Œ๋„ '์ €๋ ‡๊ฒŒ ์ž˜ํ•˜๋Š” ์นœ๊ตฌ๊ฐ€ CS ๊ณต๋ถ€๋Š” ์™œ ํ•˜๋Š” ๊ฑฐ์ง€? ๋ฉด์ ‘ ์ค€๋น„ํ•˜๋‚˜?'๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.

๋ฏธ๋ž˜์— ์ด ๊ธ€์„ ๋ณผ ๋‚˜์˜ ์žฌ๋ฏธ๋ฅผ ์œ„ํ•ด ๋ถ€๋„๋Ÿฌ์›€์„ ๊ฐ์ˆ˜ํ•˜๊ณ  ๊ธฐ๋กํ•œ๋‹ค.

 

์šด์˜์ฒด์ œ๊ฐ€, ์ปดํ“จํ„ฐ ๋„คํŠธ์›Œํฌ์˜ ์„ธ๊ณ„๊ฐ€ ์ด๋ ‡๊ฒŒ๋‚˜ ๊นŠ๊ณ  ๋ฐฉ๋Œ€ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์ตœ๊ทผ์—์•ผ ์กฐ๊ธˆ์ด๋‚˜๋งˆ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค.

์–ด์ฐŒ ๋ณด๋ฉด ๋‹น์—ฐํ•œ ๊ฑด๋ฐ ๋ชจ๋ฅผ ๋•Œ๋Š” ๊ทธ๋ ‡๊ฒŒ๋‚˜ ๋ชจ๋ฅด๊ฒ ๋”๋ผ๊ณ ๐Ÿ˜‚๐Ÿ˜‚

 

๋ญ˜ ๊ณต๋ถ€ํ•ด์•ผ ํ•˜๋Š”์ง€๋ฅผ ์•Œ๊ฒŒ ๋˜๋‹ˆ๊นŒ ์ผ๋‹จ ์žฌ๋ฏธ๊ฐ€ ๋ถ™๋Š”๋‹ค.

๊ณต๋ถ€ํ•˜๋Š” ๊ฑด ์–ด๋ ต์ง€ ์•Š๋‹ค. ๊ณต๋ถ€๋ฅผ ์ž˜ํ•˜์ง€๋„, ๊ณต๋ถ€ํ•˜๋Š” ๊ฒŒ ์ฆ๊ฒ์ง€๋„ ์•Š์ง€๋งŒ, ํ•ด์•ผ ํ•˜๋Š” ๊ฑฐ๋ฉด ํ•ด์•ผ์ง€ ๋ญ.. ๋ผ๋Š” ๋งˆ์Œ์œผ๋กœ..

 

์ผ๋‹จ ์ž๋ฃŒ๊ตฌ์กฐ์™€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ตœ๊ทผ์— ์‹œ์ž‘ํ–ˆ๊ณ , ๊พธ์ค€ํžˆ ๊ณต๋ถ€๋ฅผ ๊ณ„์†ํ•ด์•ผ ํ•  ๊ฒƒ์ด๋‹ค.

์—ฌ๊ธฐ์— ์ด์ œ OS ๊ณต๋ถ€๋ฅผ ์‹œ์ž‘ํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค.

๊ฒ€์ƒ‰์„ ํ†ตํ•ด ์ถ”์ฒœ๋ฐ›์€ ๊ฐ•์˜์™€ ์ฑ…๋“ค์„ ํ†ตํ•ด์„œ ์šฐ์„  ๋ผˆ๋Œ€๋ฅผ ์„ธ์šฐ๊ณ , ์ตœ์ข… ๋ชฉํ‘œ๋Š” ๊ณต๋ฃก์ฑ… ์™„๋…ํ•˜๊ธฐ!!

 

์–ด์ฉŒ๋‹ค ๋ณด๋‹ˆ ๋˜ ์—„์ฒญ๋‚˜๊ฒŒ ์˜†๊ธธ๋กœ ์ƒŒ ๊ฒƒ ๊ฐ™์€๋ฐ, ์–ด์จŒ๋“  ์ง€๊ธˆ ๋‚˜๋Š” ๋Œ€ํ•™์›์— ๊ฐ€๊ณ  ์‹ถ๋‹ค.

๋‚ด ์ง€์‹์˜ ๊ณต๋ฐฑ์„ ์ฑ„์šฐ๊ณ  ์‹ถ๊ณ , ๊ฐ™์€ ๊ณต๋ถ€๋ฅผ ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค๊ณผ ๋” ๋งŽ์ด ์ ‘์ด‰ํ•˜๊ณ  ์‹ถ๋‹ค. ๋ฌผ๋ก  ๋งˆ์Šคํฌ ๋ผ๊ณ ์š” ใ…‹ (๋†๋‹ด์ž„)

์ผ๋‹จ ์ง€๊ธˆ ๋‚ด๊ฒŒ๋Š” ์ง€๊ธˆ ๋‹น์žฅ ํ•ด๊ฒฐํ•ด์•ผ ํ•  ๋งŽ์€ ๊ณผ์ œ๋“ค์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์ด๊ฑด ์•„์ง์€ ์•„์ฃผ ๋ง‰์—ฐํ•œ ์ด์•ผ๊ธฐ๋‹ค.

์–ด์ฉŒ๋ฉด ? ? ? ? ๋ฏธ๋ž˜์˜ ๋‚˜๋Š” ์ƒ๊ฐ์„ ๋ฐ”๊ฟ”๋จน๊ณ  ๋Œ€ํ•™์› ๊ทผ์ฒ˜์—๋„ ์•ˆ ๊ฐˆ ์ˆ˜๋„ ์žˆ๋‹ค.

๋ญ ๊ทธ๋Ÿด ์ˆ˜๋„ ์žˆ์ง€ใ…Ž ์‚ฐ๋‹ค๋Š” ๊ฒŒ ๋‹ค ๊ทธ๋Ÿฐ ๊ฑฐ ์•„๋‹ˆ๊ฒ ์Œ?

์–ด์จŒ๋“  ์ง€๊ธˆ ๋‚ด ์ƒ๊ฐ์„ ์–ด๋””์—๋“  ๊ธฐ๋กํ•ด๋‘๊ณ  ์‹ถ๊ธฐ ๋•Œ๋ฌธ์— ์ด ๊ธ€์„ ์ž‘์„ฑํ•œ๋‹ค.

 

๋ฏธ๋ž˜์˜ ๋‚˜๋ฅผ ์œ„ํ•ด ์ƒ๊ฐ์„ ์ •๋ฆฌํ•˜๋Š”๋ฐ ํฐ ๋„์›€์ด ๋œ ๊ธ€๋“ค์˜ ๋งํฌ๋ฅผ ์ •๋ฆฌํ•˜๋ฉฐ ๊ธ€์„ ๋งˆ๋ฌด๋ฆฌํ•œ๋‹ค.

 

 

 

์ฐธ๊ณ 

 

https://okky.kr/article/198551

 

OKKY | ์•ผ๊ฐ„๋Œ€ํ•™์›์„ ๊ณ ๋ คํ•˜์‹œ๋Š” ๊ฐœ๋ฐœ์ž๋ถ„๋“ค๊ป˜์„œ ์•Œ์•„๋‘์‹œ๋ฉด ์ข‹์„

์•ผ๊ฐ„(ํŠน์ˆ˜)๋Œ€ํ•™์›์„ ๊ณ ๋ คํ•˜์‹œ๋Š” ๊ฐœ๋ฐœ์ž๋ถ„๋“ค๊ป˜์„œ ์•Œ์•„๋‘์‹œ๋ฉด ์ข‹์„(๊ฒƒ ๊ฐ™์€)์ ๋“ค... ์•ˆ๋…•ํ•˜์‹ญ๋‹ˆ๊นŒ? ์„ฑ๋ƒฅ์ž…๋‹ˆ๋‹ค. ์˜ฅํžˆ๋ฅผ ์ฒ˜์Œ๋ณด๊ณ  '์ด๋Ÿฐ ์„ธ์ƒ์ด!' ํ•˜๊ณ  ๊ฐํƒ„ํ–ˆ๋˜๋•Œ๊ฐ€ ์—Š๊ทธ์ œ ๊ฐ™์€๋ฐ ๋ฒŒ์จ ์˜ฅํžˆ๋ฅผ ๋“ค

okky.kr

 

https://brunch.co.kr/@maengdev/8

 

๋Œ€ํ•™์›์„ ๊ณ ๋ฏผํ•˜๋Š” ๋‹น์‹ ์—๊ฒŒ...

๋Œ€ํ•™์› ์™œ ์–ด๋–ป๊ฒŒ ๊ฐ€๋Š”๊ฐ€? | 1. ์„œ๋ก  1.1. ์–ด๋–ค ๋Œ€ํ•™์›์— ๊ฐˆ ๊ฒƒ์ธ๊ฐ€? ๋ณธ ์ •๋ณด๋Š” ์ปดํ“จํ„ฐ ๊ณตํ•™/๊ธฐ์ˆ  ๊ฒฝ์˜/MIS/์ •๋ณด ๊ณตํ•™ ๋“ฑ IT๋ถ„์•ผ ๋Œ€ํ•™์›์— ์ดˆ์ ์ด ๋งž์ถ”์–ด์ง„ ์ •๋ณด์ž„์„ ์‚ฌ์ „์— ๋ฐํžˆ๋Š” ๋ฐ” ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ

brunch.co.kr

 

http://www.kwangsiklee.com/2019/07/%EC%95%BC%EA%B0%84%EB%8C%80%ED%95%99%EC%9B%90%EC%97%90-%EB%8C%80%ED%95%9C-5%EA%B0%80%EC%A7%80-%EC%9D%B4%EC%95%BC%EA%B8%B0/

 

์•ผ๊ฐ„๋Œ€ํ•™์›์— ๋Œ€ํ•œ 5๊ฐ€์ง€ ์ด์•ผ๊ธฐ

ํ•„์ž๋Š” 2017๋…„ 3์›”์„ ์‹œ์ž‘์œผ๋กœ 2019๋…„ 8์›”์— ์ด๋ฅด๋Ÿฌ ์•ผ๊ฐ„๋Œ€ํ•™์›์—์„œ ์ปดํ“จํ„ฐ๊ณตํ•™๊ณผ ์„์‚ฌ๊ณผ์ •์„ 5ํ•™๊ธฐ๋ฅผ ๋งˆ๋ฌด๋ฆฌ ํ•˜๊ฒŒ๋œ๋‹ค. ์ž๊ธฐ๊ฐœ๋ฐœ์— ๊ด€์‹ฌ์ด ์žˆ๋Š” ํ˜น์€ ์„์‚ฌ์— ๋ฏธ๋ จ์ด ๋‚จ์€ CS ๊ณ„์—ด ์ง์žฅ์ธ ์‚ฌ๋žŒ์ด๋ผ

www.kwangsiklee.com

๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด์„œ GROUP BY๋ฅผ ์‚ฌ์šฉํ•˜๋Š” Query์—์„œ ์•„๋ž˜์™€ ๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.

 

"Expression #20 of SELECT list is not in GROUP BY clause and contains nonaggregated column '์ปฌ๋Ÿผ๋ช…' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by"

 

๊ฒ€์ƒ‰์„ ํ•ด๋ณด๋‹ˆ MySQL 5.7 Version ๋ถ€ํ„ฐ SQL_MODE๊ฐ€ ์ƒ๊ฒผ๋‹ค๊ณ  ํ•œ๋‹ค. (์ฐธ๊ณ )

SQL_MODE๋Š” MySQL์— ์ €์žฅ๋  ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ(validation check) ๋ฒ”์œ„๋ฅผ ์„ค์ •ํ•˜๋Š” ์‹œ์Šคํ…œ ๋ณ€์ˆ˜์ด๋‹ค.

 

์—๋Ÿฌ๋Š” SQL_MODE์˜ ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜์ธ ONLY_FULL_GROUP_BY์™€ ๊ด€๋ จ๋œ ๊ฒƒ์ด์—ˆ๋‹ค.

MySQL 8.0์—์„œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ONLY_FULL_GROUP_BY ์˜ต์…˜์ด ํ™œ์„ฑํ™”๋˜์–ด ์žˆ๋‹ค๊ณ  ํ•˜๋Š”๋ฐ, OS์˜ ์ฐจ์ด์ธ์ง€ ๋‚ด ๊ฐœ๋ฐœํ™˜๊ฒฝ์—๋Š” ์ ์šฉ๋˜์–ด ์žˆ์ง€ ์•Š์•˜๋‹ค. (์•„๋งˆ Windows OS์—ฌ์„œ ๊ทธ๋Ÿฐ ๊ฒƒ์ด ์•„๋‹๊นŒ ์ถ”์ธก)

๊ทธ๋ž˜์„œ ๋กœ์ปฌ์—์„œ๋Š” ์ œ๋Œ€๋กœ ๋Œ์•„๊ฐ€๋˜ ๊ธฐ๋Šฅ์ด ์„œ๋ฒ„์— ์˜ฌ๋ ธ์„ ๋•Œ ONLY_FULL_GROUP_BY ์˜ต์…˜์— ๊ฑธ๋ ค์„œ ๋จนํ†ต์ด ๋œ ๊ฒƒ์ด๋‹ค.

๊ฐœ๋ฐœํ™˜๊ฒฝ์„ ํ†ต์ผํ•˜๊ธฐ ์œ„ํ•ด SQL_MODE์˜ ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์ฟผ๋ฆฌ๋ฅผ ์ˆ˜์ •ํ•ด์„œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ๋‹ค.

 

 

 

์ฟผ๋ฆฌ ์ˆ˜์ •ํ•˜๊ธฐ

GROUP BY์ ˆ์„ ์‚ฌ์šฉํ•  ๋•Œ SELECT ํ•ด์™€์•ผ ํ•˜๋Š” ์ปฌ๋Ÿผ์„ ๋ชจ๋‘ ๋‚˜์—ดํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค. GROUP BY์— ์„ ์–ธ๋˜์ง€ ์•Š์€ ์ปฌ๋Ÿผ์„ ๊ฐ€์ ธ์˜ค๋ ค๊ณ  ํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋‚˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ํ•œ๋‹ค.

 

SELECT name, ANY_VALUE(email), Max(age) 
FROM MEMBER
GROUP BY name;

 

GROUP BY๋กœ ๋ฌถ์–ด์ฃผ์ง€ ์•Š๋Š” ์ปฌ๋Ÿผ์— ANY_VALUE() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฟผ๋ฆฌํ•˜๋ฉด ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

 

SQL_MODE ์˜ต์…˜ ์ถ”๊ฐ€ํ•˜๊ธฐ

ํ˜„์žฌ ์ ์šฉ๋˜์–ด ์žˆ๋Š” SQL_MODE๋ฅผ ์กฐํšŒ

 

MySQL ์„œ๋ฒ„์— ์ ‘์†(mysql -u root -p) ํ›„ SELECT @@SQL_MODE; ๋ช…๋ น์–ด๋กœ ํ˜„์žฌ ์ ์šฉ๋˜์–ด ์žˆ๋Š” SQL_MODE ์˜ต์…˜์„ ์กฐํšŒํ•œ๋‹ค. 

 

SELECT @@SQL_MODE;

 

SQL_MODE๋ฅผ ์˜๊ตฌ์ ์œผ๋กœ ๋ณ€๊ฒฝํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด my.ini (Windows OS) ํŒŒ์ผ์— SQL_MODE ์†์„ฑ์„ ์ถ”๊ฐ€ํ•ด์ค˜์•ผ ํ•œ๋‹ค.

 

** my.ini ํŒŒ์ผ์˜ ๊ฒฝ๋กœ๋ฅผ ์ฐพ๋Š” ๋ฐฉ๋ฒ•

1. ์‹คํ–‰์ฐฝ(์œˆ๋„์šฐํ‚ค + R)์—์„œ services.msc ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์„œ๋น„์Šค์ฐฝ ์—ด๊ธฐ

2. MySQL80์˜ ์†์„ฑ์—์„œ ์‹คํ–‰ํŒŒ์ผ ๊ฒฝ๋กœ๋ฅผ ํ™•์ธ (C:\ProgramData\MySQL\MySQL Server 8.0\my.ini)

 

 

 

 

์„ค์ • ์ถ”๊ฐ€ํ•˜๊ธฐ

my.ini ํŒŒ์ผ์—์„œ [mysqld] ๊ตฌ๊ฐ„์— sql_mode ์†์„ฑ์˜ ํ•„์š”ํ•œ ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค.

 

sql_mode="ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"

 

** my.ini ํŒŒ์ผ์˜ ์ˆ˜์ • ๊ถŒํ•œ ๋ณ€๊ฒฝํ•˜๊ธฐ

๊ถŒํ•œ์ด ์—†์–ด ํŒŒ์ผ์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์—†๋‹ค๋Š” ์•Œ๋ฆผ์ฐฝ์ด ๋œจ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ๊ทธ๋Ÿด ๋•Œ๋Š” ์‚ฌ์šฉ ๊ถŒํ•œ์„ ๋ณ€๊ฒฝํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

my.ini ์˜ค๋ฅธ์ชฝ ํด๋ฆญ-์†์„ฑ-๋ณด์•ˆ ํƒญ์—์„œ ์‚ฌ์šฉ์ž์˜ ๊ถŒํ•œ์„ ํ—ˆ์šฉํ•ด์ฃผ๋ฉด ์ˆ˜์ •์ด ๊ฐ€๋Šฅํ•ด์ง„๋‹ค.

 

 

 

์ฐธ๊ณ 
https://info-lab.tistory.com/274

https://velog.io/@heumheum2/ONLYFULLGROUPBY

https://blog.jiniworld.me/64

+ Recent posts